学习的是动力节点老杜出的JDBC教程,该教程对JDBC未过多深入,只是讲了基础的使用。
目录
JDBC本质:
JDBC(JAVA Database Conectivity)是SUN公司指定的一套java与数据库连接的接口。而诸如MySQL,Oracle等厂家实现了这些接口。作为编程人员,我们使用JDBC接口里提供的方法即可,不用关注底层实现细节。这也是最能体现接口与实现类作用的应用之一。
JDBC开发步骤:
注册驱动(选用哪个公司的数据库进行连接);
获取数据库连接(提供url,user,password等信息);
获取数据库操作对象;
执行sql语句;
处理查询结果集;
释放连接。
注册驱动:
方式一:
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
注意,这里声明的是一个接口,即jdbc自己写的Driver,而实际生成的是一个实现类,即mysql公司写的实现类com.mysql.jdbc.Driver。DriverManager同样是jdbc提供的类。
事实上,观察Driver类的代码可以发现,里面已经提供了静态代码块来注册驱动,所以我们没有必要自己注册驱动,只用执行Driver的静态代码块即可。而类在初始化的时候,静态代码块会执行,因此,只需初始化类即可。
方式二:
Class.forName("com.mysql.cj.jdbc.Driver");
forName即可初始化给定的类。(原理是什么呢?反射?)
获取数据库连接:
Connection conn = driver.getConnection(url, user, password)
url:统一资源定位符,包含协议+IP地址+端口号+资源名+可选参数
如果连接本机的mysql数据库,则url地址为:
jdbc:mysql://127.0.0.1:3306/sql_store?serverTimezone=UTC
获取数据库操作对象:
Statement stmt = conn.createStatement();
通过一个连接Connection是可以创建多个Statement的
执行sql语句:
int count = stmt.executeUpdate(sql);
ResultSet rs = stmt.executeQuery(sql);
executeUpdate执行DML(数据操控语言,增删改)语句,count是该sql语句影响的数据库的记录的条数;
executeQuery执行查询语句,可配合下一步处理查询结果集使用。
处理查询结果集:
结果集的处理需要用到遍历的方法,遍历结果集的原理如下:
使用ResultSet类的next方法,结合循环,可以遍历处理结果集:
while(rs.next()){
//获得第一行的第一项内容
String ** = rs.getString(1);
//也可以根据列名取内容,注意填入的是查询的名称,即若有别名要填别名
}
释放资源:
conn.close();
stmt.close();