【三大接口】JDBC:Connection、statement(PreparedStatement)、ResultSet的创建及使用 【整理】

1、简述JDBC

JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。
简单地说,JDBC 可做三件事:与数据库建立连接、发送 SQL 语句并处理结果。

2、Connection接口

Connection(java.sql包)是获取数据库连接的接口
因为连接数据库需要使用DriverManager.getConnection方法,而此方法的返回值是Connection。

//传入的三个值分别为使用数据的URL、当前数据库的name、当前数据库的密码pwd
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop","root","123456");

当创建好连接之后就可以向数据库发送sql语句
Statement接口就是用于执行静态的sql语句

//用上面这个conn连接创建一条sql语句
Statement stmt = conn.createStatement();
创建完成之后执行这条sql语句
stmt.execute("select * from table");

因为execute()方法的返回值是Boolean类型,所以我们只能知道这条sql语句是否执行成功,但是获取不到数据。
如果想要拿到数据,我们需要使用executeQuery()方法,这个方法的返回值是ResultSet类型,所以我们需要用一个ResultSet 来接收返回的数据。

代码如下:

//创建sql语句
Statement stmt = conn.createStatement();
//或得返回的结果集
ResultSet rs = stmt.executeQuery(sql);
//遍历结果集
//ResultSet提供的检索不同类型字段的方法next()
while (rs.next()) {
	rs.getObject("ChampName");
}
//ChampName:数据库中当前查询表的字段名称

当我们使用只是查询的时候一般使用Statement就可以,但是我们日常的业务逻辑处理中不单单只是查询,还会有DML操作,当我们执行DML操作时,为了防止sql注入,就不可以使用Statement,我们需要使用PreparedStatement接口来代替他了,PreparedStatement是Statement的子接口。
使用PreparedStatement接口的一些好处:
1.提高执行语句的性能
2.可读性和可维护性更好
3.简化Statement中的操作
4.安全性更好(可预防sql注入)

String sql = "delete from table where id=?";
PreparedStatement prep = conn.prepareStatement(sql);
//parameterIndex:第几个?从1开始数,x:?的值。
prep.setObject(parameterIndex, x);
//当对数据库进行DML操作时,使用executeUpdate()方法
prep.executeUpdate();

注意:以上四个接口都属于java.sql包

3、Statement接口

Statement接口:用于执行不带参数的简单SQL语句。创建Statement实例对象后可以调用JDBC提供的3种执行SQL语句的方法:
(1)executeUpdate()方法,一般用于执行SQL的INSERT,DELETE,UPDATE语句
(2)executeQuery()方法,一般用于执行SQL的SELECT语句,因为 它的返回值是执行SQL语句后产生的一个ResultSet接口的实例(结果集)
(3)execute()方法,即一般它执行的SQL语句既有查询又有更新值,约等于executeUpdate()和executeQuery()两个方法的合辑。

4、PreparedStatement接口

PreparedStatement接口:它与Statement 的主要区别
(1)它包含的SQL语句是预编译的,所以当多次执行一条SQL语句时用它会更快
(2)在设置参数是可以用“?”代替。如:

PreparedStatement pstmt=conn.preparedStatement(insert into test values(?,?));
pstmt.setString(1,'gg');
pstmt.setString(2,'123');

5、ResultSet接口

ResultSet接口:包含了Statement和PreparedStatement的executeQuery方法中SELECT的结果集。相当于用它来读取数据库里每列的值。

学如逆水行舟,不进则退
发布了339 篇原创文章 · 获赞 490 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_42429718/article/details/103864309