JDBC
Java数据库连接(Java Database connectivity)简称JDBC,是Java程序与数据库系统通信的标准API,它包含一组用Java语言编写的类和接口。以下以MySQL为例,介绍使用JDBC的一般步骤:
- 1. 调用Class.forName()方法加载数据库驱动程序
-
Class.forName("com.mysql.jdbc.Driver");
- 定义要连接数据库的地址URL,格式为:jdbc:<子协议><子名称>
String mysqlURL="jdbc:mysql://host:port/dbName";
- 使用适当的驱动程序类建立与数据库的连接,调用DriverManager对象的getConnection()方法,获得一个Connection对象,它表示一个打开的连接
Connection conn = DriverManager.getConnection(URL,"数据库用户名","密码");
- 创建语句对象Statement,使用Connection接口的createStatement方法创建一个Statement对象,该对象用于传递简单的不带参数的SQL语句给数据库管理系统来执行
Statement stmt = conn.createStatement();
使用Connection接口的prepareStatement方法创建一个PreparedStatement对象,该对象用于传递一个或多个输入参数的SQL语句,例如:
PreparedStatement psm = conn.prepareStatement("INSERT INTO book(bookid,name) VALUES(?,?)");
psm.setString(1, "9787208061644");
psm.setString(2, "追风筝的人");使用Connection接口的prepareCall方法创建一个CallableStatement语句对象,该对象用于调用存储过程,例如:
CallableStatement csm = conn.prepareCall("{call validate(?,?)}");
csm.setString(1, "9787208061644");
csm.setString(2, "追风筝的人"); - 执行语句,Statement接口提供了3个方法执行SQL语句,分别是executeQuery、executeUpdate和execute。
- executeQuery用于执行SELECT语句,并返回单个结果集,保存在ResultSet对象中,如:
String sql = "SELECT * FROM book"; ResultSet rd = stmt.executeQuery(sql);
- executeUpdate用于执行SQL DML语句,即INSERT、UPDATE和DELETE语句,此时返回SQL语句执行时数据表受影响的行数,返回值是一个整数。executeUpdate方法还可用于执行SQL DDL语句,如CREATE TABLE、DROP TABLE等,此时返回值为0,例如:
String sql = "DELETE FROM book WHERE bookid="+"‘12‘"; int n = stmt.executeUpdate(sql);
- execute方法既可执行查询语句,也可以执行更新语句,常用于处理类型未知的SQL语句
- executeQuery用于执行SELECT语句,并返回单个结果集,保存在ResultSet对象中,如:
- 对返回的结果集ResultSet对象进行处理,ResultSet对象包含了SQL语句的执行结果,它使用一组get方法实现对结果行中每列数据的访问。使用next方法用于移动到ResultSet的下一行,使其成为当前行。例如,下面代码用来显示结果集中所有记录的前两列:
String sql = "SELECT * FROM book"; ResultSet rs = stmt.executeQuery(sql); //对结果集进行迭代 while(rs.next()){ bookid = rs.getString(1); name = rs.getString(2); System.out.println(bookid+","+name); }
- 关闭连接,操作完成后要关闭所有的JDBC对象,以释放资源。包括:关闭结果集,关闭语句对象和连接对象。归纳起来后,一般代码如下:
String dbDriver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://host:port/dbName"; Connection conn = null; Statement stmt = null; ResultSet rs = null; Class.forName(dbDriver); conn = DriverManager.getConnection(url,"数据库用户名","密码"); stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM tablename"); while(rs.next()){ //读取数据操作 } //关闭连接 rs.close(); stmt.close(); conn.close();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。