package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
/*
* jdbc快速入门
* */
public class jdbcDemo1 {
public static void main(String[] args) throws Exception {
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","1314");
//4.定义sql语句
String sql = "update account set balance = 500 where id = 1";
//5.获取执行sql的对象Statement
Statement stmt = conn.createStatement();
//6.执行sql
int count = stmt.executeUpdate(sql);
//7.处理结果
System.out.println(count);
//8.释放资源
stmt.close();
conn.close();
}
}
上面代码会有一条警告,但是可以正常运行:
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
在mysql 5.0版本以后的jar包中,第二条注册驱动的代码可以省略。
小技巧:当有异常提示的时候,alt+enter可以抓捕异常,不需要自己敲代码了。
详解各个对象:
1.DriverManager:驱动管理对象
功能:
(1)注册驱动:
static void registerDriver(Driver driver); 注册与给定的驱动程序 DriverManager
(2)获取数据库连接
方法:static Connection getConnection(String url, String User, String passwod);
参数:
1.url:指定连接路径
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称
例子:jdbc:mysql://localhost:3306/db3
细节:如果连接的是本计mysql服务器,并且mysql服务默认端口号是3306,则url可以简写为
jdbc:mysql:///数据库名称
2.user:用户名
3.password:密码
2.Connection:数据库连接对象
功能:
(1)获取执行sql的对象
* Statement createStatement()
* PreparedStatement createStatement(String sql)
(2)管理事务:有3个
开启事务:void setAutoCommit(boolean autoCommit). 调用该方法,设置参数为false,即开启事务
提交事务:commit()
回滚事务:rollback()
重要*3.Statement:执行sql的对象 -->用于执行静态SQL语句并返回其生成的结果对象
1.执行sql
(1)boolean execute(String sql):可以执行任意的sql --->。 了解就好
*(2)int executeUpdate(String sql) : 执行DML(insert, update,delete)语句,DDL(create, alter,drop)语句
返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功,返回值>0则执行成功。
*(3)ResultSet executeQuery(String sql): 执行DQL(select)语句
2.练习:
(1)account表 添加一条记录
(2) account表 修改一条记录
(3) account表 删除一条记录
(1)添加记录
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
* account表 添加一条记录 insert语句
*
*
* */
public class jdbcDemo2 {
public static void main(String[] args){
Statement stmt = null;
Connection conn = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.定义sql
String sql = "insert into account values(null,'王五',3000)";
//3.获取Connection对象
conn = DriverManager.getConnection("jdbc:mysql:///db3","root","1314");
//4.获取执行sql的对象 Statement
stmt = conn.createStatement();
//5.执行sql
int count = stmt.executeUpdate(sql);//影响的行数
//6。处理结果
System.out.println(count);
if(count>0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}
} catch (ClassNotFoundException e){
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
//7.释放资源
//避免空指针异常
if(stmt != null){
try {
stmt.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
}
(2)
package cn.itcast.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/*
* account表 修改记录
* */
public class jdbcDemo03 {
public static void main(String[] args){
Statement stmt = null;
Connection conn = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.定义sql
String sql = "update account set balance = 200 where id = 3;";
//3.获取Connection对象
conn = DriverManager.getConnection("jdbc:mysql:///db3","root","1314");
//4.获取执行sql的对象 Statement
stmt = conn.createStatement();
//5.执行sql
int count = stmt.executeUpdate(sql);//影响的行数
//6。处理结果
System.out.println(count);
if(count>0){
System.out.println("修改成功!");
}else{
System.out.println("修改失败!");
}
} catch (ClassNotFoundException e){
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
//7.释放资源
//避免空指针异常
if(stmt != null){
try {
stmt.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
}
4.ResultSet:结果集对象
newt():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是则返回false
getXxx(参数):获取数据
Xxx:代表数据类型 如,int getInt(), String getString()
参数:
1.int:代表列的编号,从1开始 如,getString()
2.String: 代表列名称。 如,getDouble(balance)
注意:
使用步骤:
1.游标向下移动一行
2.判断是否有数据
3.获取数据
5.PreparedStatement:执行sql的对象。-->用于执行动态SQL语句