java 数据库基本操作 ucUuhS5
1、java数据库操作基本流程 5?TX.h9B4
2、几个常用的重要技巧: y 48zsm{
可滚动、更新的记录集 /Ur]U
w
批量更新 Rj-4K@a8#N
事务处理 ^O**ZndB/
Cf@N>N#t)
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 3vEwui-5
1、取得数据库连接 +xNq8yS
1)用DriverManager取数据库连接 I<S*"[nV
例子 >dwY(a
String className,url,uid,pwd; H h%|}*f_,
className = "oracle.jdbc.driver.OracleDriver"; 'i 8`LPQ
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; pMkM@OH
uid = "system"; *\^(-p~M
pwd = "manager"; pK)!o
Class.forName(className); q[c^`5
Connection cn = DriverManager.getConnection(url,uid,pwd); F`o"t]AD-a
2)用jndi(java的命名和目录服务)方式 unyU|B
例子 \3O1o#=(
String jndi = "jdbc/db"; ,N8SP
'R
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); N^jr
DataSource ds = (DataSource) ctx.lookup(jndi); Q>uJ:[x+
Connection cn = ds.getConnection(); R)%I9M,
多用于jsp中 ~ _ko$(;A
2、执行sql语句 && WEBQ
1)用Statement来执行sql语句 r`PD}6\
String sql; \_/dfmlIZ
Statement sm = cn.createStatement(); MFqb_q+
sm.executeQuery(sql); // 执行数据查询语句(select) P}
Y .
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); 8[oZ>7LMzC
2)用PreparedStatement来执行sql语句 !)FKF7'
String sql; J$,bsMIX
sql = "insert into user (id,name) values (?,?)"; ]MB6++.e
PreparedStatement ps = cn.prepareStatement(sql); :v^Od W
ps.setInt(1,xxx); u`u{\
xN9
ps.setString(2,xxx); ^h"@OEga?
... hdYd2
j
ResultSet rs = ps.executeQuery(); // 查询 YH&0Vy#c$
int c = ps.executeUpdate(); // 更新 VRUA<x
3u9}z+q
3、处理执行结果 l)Mi?B~N
查询语句,返回记录集ResultSet Oo9'
更新语句,返回数字,表示该更新影响的记录数 C%"aj^u
ResultSet的方法 Om2w+yU
1、next(),将游标往后移动一行,如果成功返回true;否则返回false Y\E7nll:.
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 ~FnY'F<35
;V84Dy#b
4、释放连接 e,l-}=5*P
cn.close(); i_p-|I:hQ
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection KuMH,rXF
n{"a0O
可滚动、更新的记录集 U Fyk%#L
1、创建可滚动、更新的Statement iO}KERfU
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); 1}OM"V
该Statement取得的ResultSet就是可滚动的 @Z
Dd(xB&
2、创建PreparedStatement时指定参数 i.e4<|{
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); I\|.WrMNi
ResultSet.absolute(9000); 6Z{(.'Be
批量更新 >&Y\g?Z6G
1、Statement 0_-P~^A
Statement sm = cn.createStatement(); !'a
<Dw5
sm.addBatch(sql1); @R ;&P