一,JDBC常用接口和类
DriverManager
Connection
Statement
PreparedStatement
ResultSet
二,JDBC编程步骤
(1)加载数据库驱动。
Class.forName(driver);
(2)通过DriverManager获取数据库连接。
Connection conn = DriverManager.getConnection(url,user,pass);
(3)通过Connection对象创建Statement对象。
Statement stmt = conn.createStatement();
(4)使用Statement执行SQL语句。
ResultSet rs = stmt.executeQuery(String SQL);
(5)操作结果集。如果执行的SQL语句是查询语句,执行结果将返回一个ResultSet对象,该对象里保存了SQL语句查询的结果。程序可以通过操作该ResultSet对象来取出查询结果。
三,执行SQL方法
执行SQL的方法有三种,executeUpdate执行DDL和DML语句,executeQuery方法执行查询语句,execute方法执行SQL语句,如果知道要执行的SQL是什么类型不用execute,因为很麻烦。
Connection对象的createStatement方法产生一个Statement对象,然后用这个对象执行SQL,这种方式比较慢而且不安全,建议用Connection的prepareStatement,参数是一个带占位符的SQL语句,然后创建一个PreparedStatement对象,操作这个对象setXXX方法让SQL语句完整,setXXX方法的参数是(int 占位符,XXX 内容),然后再执行executeUpdate方法。
注意:用预编译的SQL语句不能是关键字。
四,操作返回集
JDBC返回的结果集是ResultSet默认是不能滚动更新的,只能用next()往下,想要创建可更新的ResultSet,必须在创建Statement或PreparedStatement时传入额外的参数:
resultSetType控制ResultSet的类型,选择ResultSet.TYPE_SCROLL_INSENSITIVE
resultSetConcurrency控制ResultSet的并发类型,选择ResultSet.CONCUR_UPDATABLE
PreparedStatement pstmt = conn.prepareStatement(sql
, ResultSet.TYPE_SCROLL_INSENSITIVE
, ResultSet.CONCUR_UPDATABLE);
这样创建的ResultSet就是可滚动可更新的,可以调用updateXXX(jint c, XXX value)方法修改指针的记录,然后用updateRow()方法来更新。
方法
得到行数:getRow()
指针移动到指定行:absolute(int i)
指针往前移动:previous()
移动到最后:last()
五,事务处理
事务处理是处理一组SQL要不都完成要不都不完成,其中如果都完成了要提交事物,如果失败了要事物回滚。
首先关闭自动提交,用Connection的setAutoCommit方法conn.setAutoCommit(false),然后用Connection的commit方法来提交事务conn.commit(),如果任意一条SQL语句执行失败,我们应该用Connection的rollback来回滚事务conn.rollback()。