JDBC驱动:
第一种JDBC驱动:JDBC-ODBC桥,这种驱动是最早实现的驱动程序,将JDBC API映射到ODBC API。
第二种JDBC驱动:直接将JDBC API映射成数据库特定客户端API,包含特定数据库的本地代码,用于访问特定数据库的客户端。
第三种JDBC驱动:支持三层结构的JDBC访问方式,主要用于applet阶段,通过applet访问数据库。
第四种JDBC驱动:纯Java的,直接与数据库实例交互,这种驱动是智能的,它知道数据库使用的底层协议,目前最流行的JDBC驱动。
1、加载驱动程序
Java中可以通过“Class.forName()”方式来加载驱动程序
几种常用的数据库驱动程序:
MySQL:com.mysql.jdbc.Driver
Oracle:oracle.jdbc.driver.OracleDriver
DB2:com.ibm.db2.jdbc.app.DB2Drver
SQL Server:com.microsoft.jdbc.sqlserver.SQLServerDriver
ODBC:sun.jdbc.odbc.JdbcOdbcDriver
代码如下:
Class.forName("com.mysql.jdbc.Driver") ;
其中com.mysql.jdbc.Driver就是JDBC API驱动管理指定的MySQL数据库的驱动程序.
2、通过DriverManager类创建数据库连接对象
DriverManager类作用于程序和JDBC驱动程序之间,检查所加载驱动程序是否可以建立连接。
然后调用getConnection方法创建JDBC Connction对象
Connection conn = DriverManager.getConnection("连接数据库URL","用户名","密码") ;
其中 URL=协议名+IP地址(域名)+端口号+数据库名
例子代码:
Connection conn = DriverManager.geConnection("jdbc:mysql://localhost:3306/table","root","1") ;
3、创建Statement类并执行
Statement类的主要作用是用于执行静态SQL语句并返回生成的结果集。
通过Connection的createStatement()方法可以创建Statement对象,通过Statement对象的executeQuery()和executeUpdate()方法进行静态SQL语句的执行。executeQuery()主要用于数据的查询,executeUpdate()主要用于数据的更新、插入和删除。
例子代码:
Statement stmt = conn.createStatement() ;
ResultSet rs = stmt.executeQuery("select *from table ") ; //返回查询得出的结果集
int i = executeUpdate("insert into table (name,age) values ('张三','20')") ; //返回受影响记录总数,没有更新返回-1
PrepareStatement是Statement的子接口,它允许数据库预编译SQL语句,以后每次只改变SQL命令的参数,避免数据库每次都需要编译SQL语句,因此性能更好。
ResultSet executeQuery()、int executeUpdate();无需接受SQL字符串,只需要接受参数, void setXxx(int paramIndex,Xxx value)。
4、查看返回的ResultSet结果集
ResultSet表示执行查询数据库后返回的数据的集合,由执行Statement的executeQuery()方法得到。
ResultSet有可以指向当前数据行的指针,通过next()是指针指向下一行,然后通过列号或者字段取出数据当next()返回null表示数据不存在。
例子代码:
ResultSet rs = stmt .executeQuery("select *from table") ;
while(rs.next()){
int id = rs.getInt(1) ; //通过列号取出,从1开始
String name = rs.getString("name") ; //通过字段名取出
int age = rs.getInt("age") ;
}
5、关闭数据库连接
使用完数据库,要通过Connection的close()方法及时关闭数据库。
这些对象使用了规模较大的数据结构,我们不应该等等垃圾回收器来处理他们。