日期:2014-05-18  浏览次数:20677 次

Java数据库编程中的几个常用技巧
Java数据库编程中的几个常用技巧
1、java数据库操作基本流程  
     2、几个常用的重要技巧:  
     可滚动、更新的记录集  
     批量更新  
     事务处理  
     java数据库操作基本流程:取得数据库连接   -   执行sql语句   -   处理执行结果   -   释放数据库连接  
     1、取得数据库连接  
     1)用DriverManager取数据库连接  
     例子:  
String   className,url,uid,pwd;  
className   =   "oracle.jdbc.driver.OracleDriver ";  
url   =   "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;  
uid   =   "system ";  
pwd   =   "manager ";  
Class.forName(className);  
Connection   cn   =   DriverManager.getConnection(url,uid,pwd);  
     2)用jndi(java的命名和目录服务)方式  
     例子  
String   jndi   =   "jdbc/db ";  
Context   ctx   =   (Context)   new   InitialContext().lookup( "java:comp/env ");  
DataSource   ds   =   (DataSource)   ctx.lookup(jndi);  
Connection   cn   =   ds.getConnection();  
     多用于jsp中  
     2、执行sql语句  
     1)用Statement来执行sql语句  
String   sql;  
Statement   sm   =   cn.createStatement();  
sm.executeQuery(sql);   //   执行数据查询语句(select)  
sm.executeUpdate(sql);   //   执行数据更新语句(delete、update、inssert、drop等)statement.close();  
     2)用PreparedStatement来执行sql语句  
String   sql;  
sql   =   "inssert   into   user   (id,name)   values   (?,?) ";  
PreparedStatement   ps   =   cn.prepareStatement(sql);  
ps.setInt(1,xxx);  
ps.setString(2,xxx);  
...  
ResultSet   rs   =   ps.executeQuery();   //   查询  
int   c   =   ps.executeUpdate();   //   更新  
     3、处理执行结果  
     查询语句,返回记录集ResultSet。  
     更新语句,返回数字,表示该更新影响的记录数。  
     ResultSet的方法:  
     1、next(),将游标往后移动一行,如果成功返回true;否则返回false。  
     2、getInt( "id ")或getSting( "name "),返回当前游标下某个字段的值。  
     3、释放连接。  
cn.close();  
     一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection  
     可滚动、更新的记录集  
     1、创建可滚动、更新的Statement  
Statement   sm   =   cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);  
     该Statement取得的ResultSet就是可滚动的  
     2、创建PreparedStatement时指定参数  
PreparedStatemet   ps   =   cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);  
ResultSet.absolute(9000);  
     批量更新  
     1、Statement  
Statement   sm   =   cn.createStatement();  
sm.addBatch(sql1);  
sm.addBatch(sql2);  
...  
sm.executeBatch()  
     一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、inssert等或兼有  
     2、PreparedStatement  
PreparedStatement   ps   =   cn.preparedStatement(sql);  
{  
    ps.setXXX(1,xxx);  
    ...  
    ps.addBatch();  
}  
ps.executeBatch();  
     一个PreparedStatement,可以把