java 数据库基本操作 :U(A;U1,
1、java数据库操作基本流程 a -moI+y
2、几个常用的重要技巧: d5z`B H.
可滚动、更新的记录集 1&o|TT/
批量更新 a+PzI x2
事务处理 hDq`Z$_+KX
0nD/;\OU
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 =iD3Yt
1、取得数据库连接 13=.H5
1)用DriverManager取数据库连接 wsVV$I[2
例子 B !=F2
String className,url,uid,pwd; :$9tF>
className = "oracle.jdbc.driver.OracleDriver"; 2Q"K8=s
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; 1~QPG\cdIX
uid = "system"; .q 3/_*
pwd = "manager"; wuJ4kW$
Class.forName(className); Iy3GE[
Connection cn = DriverManager.getConnection(url,uid,pwd); 7
^mL_SMj
2)用jndi(java的命名和目录服务)方式 lo!+f"7ym\
例子 dmN&+t
String jndi = "jdbc/db"; g2/8~cn8z
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); [=^3n#WW
DataSource ds = (DataSource) ctx.lookup(jndi); R+,u^;\
Connection cn = ds.getConnection(); KFkoS0M5|
多用于jsp中 LRMx<X8
2、执行sql语句 :TC@tM~Oy
1)用Statement来执行sql语句 NL0n009"c$
String sql; q=qcm`ce
Statement sm = cn.createStatement(); Mzw X>3x
sm.executeQuery(sql); // 执行数据查询语句(select) J{&H+rd
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); 9v!1V,`j"
2)用PreparedStatement来执行sql语句 =6|&Jt
String sql; g^ i&gNDx
sql = "insert into user (id,name) values (?,?)"; g!z&~Z:
PreparedStatement ps = cn.prepareStatement(sql); 1q1jZqno
ps.setInt(1,xxx); klR|6u]%
ps.setString(2,xxx); fLm*1S|%\
... |WdPE@P
ResultSet rs = ps.executeQuery(); // 查询 JO"<{ngsQ
int c = ps.executeUpdate(); // 更新 DXK}-4"\
JOim3(5?s
3、处理执行结果 A:9?ZI/X
查询语句,返回记录集ResultSet '1)$'
更新语句,返回数字,表示该更新影响的记录数 Eue~Y+K*b
ResultSet的方法
}sO&. ME
1、next(),将游标往后移动一行,如果成功返回true;否则返回false \K]0JH
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 FzXJ]H
eSmLf*\G
4、释放连接 fG w9!
cn.close(); R=
o2K
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection 1"M]3Kl
%(G* ,
可滚动、更新的记录集 v(D;PS3r
7
1、创建可滚动、更新的Statement YNj`W1
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); {9aE5kR
该Statement取得的ResultSet就是可滚动的 "djw>|,N<
2、创建PreparedStatement时指定参数 tlp@?(u
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); 3az&