1 JDBC概念
问题:JDBC的本质是什么,解决了什么问题?
2.API讲解
<1> DriverManager的作用
问题:DriverManager有什么作用?
作用一:注册驱动
DriverManager.registerDriver(new Driver()),但是我们不使用,我们使用Class.forName(“com.mysql.jdbc.Driver”)。
作用二:获取连接
Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/db14”, “root”, “root”);
参数1:连接的URL地址,如果是本机并且端口号是3306,那么localhost:3306可以省略不写,也就是jdbc:mysql:///db14。
参数2:用户名
参数3:密码
<2> Connection的作用
问题:Connection对象有什么作用?
作用一:创建执行SQL语句的执行者对象
Statement对象:Statement statement = conn.createStatement();
PreparedStatement预编译对象:PreparedStatement pstmt=conn.prepareStatement("")
作用二:事务管理
conn.setAutoCommit(false); //设置自动提交为false就表示开启事务
conn.commit(); //提交事务
conn.rollback();//回滚事务
<3> Statement的作用
问题:Statement对象有什么作用?
作用:执行SQL语句
执行DQL语句(查询):ResultSet executeQuery(SQL);
参数:传递要执行的查询语句
返回值:封装查询结果的结果集对象。
执行DML语句(增删改):int executeUpdate(SQL);
参数:要执行的增删改语句
返回值:影响的行数,可以通过影响的行数判断是否执行成功。
<4> ResultSet的作用
问题:ResultSet对象有什么作用?
作用一:判断是否有下一行数据:boolean next()
作用二:获取该行的数据: Xxx getXxx(“列名”);
Xxx表示不同的数据类型,例如:int getInt(“sid”); String getString(“name”)
3.JDBC入门案例
jdbc表:
<1>入门案例步骤
【前提】:导入mysql的驱动jar包
【第一步】:注册驱动,告诉程序使用哪种数据库
【第二步】:获取连接,需要传递url、用户名、密码参数
【第三步】:获取执行SQL的对象,负责CRUD
【第四步】:执行查询操作,获取结果
【第五步】:处理结果
【第六步】:释放资源
<2>代码实现
public class JdbcDemo1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//【前提】:导入mysql的驱动jar包
//1.注册驱动,告诉程序使用哪种数据
//不需要我们自己调用registerDriver方法注册驱动
//Driver中有静态代码块,只要我们加载它,就能注册驱动
Class.forName("com.mysql.jdbc.Driver");//mysql5之后在配置文件中配置,可省略不写
//2.获取连接,需要传递url、用户名、密码参数
//连接本机localhost:3306可以不写
Connection conn = DriverManager.getConnection("jdbc:mysql:///jdbc", "root", "123456");
// Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", "123456");
//3.获取执行SQL的对象,负责CRUD[增查改删]
Statement statement = conn.createStatement();
//4.执行sql语句,并返回结果
ResultSet rs = statement.executeQuery("select * from student;");
//5.处理结果
while(rs.next()){//如果返回true表示有下一行元素
//获取并打印
int sid = rs.getInt("sid");
String name = rs.getString("name");//不区分大小写
int age = rs.getInt("age");
String birthday = rs.getString("birthday");
//Date birthday1 = rs.getDate("birthday"); //两种获取方法都行
System.out.println(sid +"\t"+name+"\t"+age +"\t"+birthday);
}
//6.释放资源
rs.close();
statement.close();
conn.close();
}
}
注:URL参数jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf8&usesSL=true
mysql5.0之后可省略不写
useUnicode:支持中文编码
characterEncoding=utf8:字符集设为utf8
utf8&usesSL=true:使用安全的连接(防止乱七八糟的错误)