java 数据库基本操作 ~Iu09t|a
1、java数据库操作基本流程 yW&iUh=0
2、几个常用的重要技巧: p{J_d,JH
可滚动、更新的记录集 ?f`-&c;
批量更新 Wd}mC<rv1
事务处理 }a1UOScO0
hF 1/=;>
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 _YS+{0
Vq%
1、取得数据库连接 $g};u[y
1)用DriverManager取数据库连接 bsry([N>w
例子 KV*:,>
String className,url,uid,pwd; j5O*H_D
className = "oracle.jdbc.driver.OracleDriver"; +;Gl>$
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; a=FRJQ8S
uid = "system"; 9-^p23.@[j
pwd = "manager"; ,lJ6"J\8.
Class.forName(className); TfVD'HAN;l
Connection cn = DriverManager.getConnection(url,uid,pwd); v1=X =H
2)用jndi(java的命名和目录服务)方式 ;"
*`
例子 0mh8.
String jndi = "jdbc/db"; `RcNqPY#S
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); ks;w c"k"
DataSource ds = (DataSource) ctx.lookup(jndi); (<X dj^v
Connection cn = ds.getConnection(); A%1=6
多用于jsp中 [BBKj)IK
2、执行sql语句 '[8b0\
1)用Statement来执行sql语句 h$k3MhYDes
String sql; *"\Q ~#W
Statement sm = cn.createStatement(); 61/zrMPn
sm.executeQuery(sql); // 执行数据查询语句(select) {UBQ?7.jE
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); &>l8S lC?
2)用PreparedStatement来执行sql语句 :(`>bY
String sql; t`,IW{
sql = "insert into user (id,name) values (?,?)"; 1qe^rz|
PreparedStatement ps = cn.prepareStatement(sql); p8d n-4
ps.setInt(1,xxx); eF^"{a3b
ps.setString(2,xxx); k)V%.Eobf
... Sp,Q,Q4
ResultSet rs = ps.executeQuery(); // 查询 @a\SR'8
int c = ps.executeUpdate(); // 更新 EE6|9K>
PX2k,%
3、处理执行结果 bV*zMoD#
查询语句,返回记录集ResultSet _-J @$d%
更新语句,返回数字,表示该更新影响的记录数 uO(guA,C
ResultSet的方法 6QXQ<ah"
1、next(),将游标往后移动一行,如果成功返回true;否则返回false q)ql]iH
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 IWo~s
o`mIi
4、释放连接 l\;mP.!
cn.close(); SM+fG: 4d
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection Ja v2A6a
1`]IU_) 1B
可滚动、更新的记录集 Z/= %J3f
1、创建可滚动、更新的Statement 7E3SvC|M
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); $>ZP%~O
该Statement取得的ResultSet就是可滚动的 !u{"] T:
2、创建PreparedStatement时指定参数 yCCw<