java 数据库基本操作 ,;d9uG2
1、java数据库操作基本流程 ygfqP
2、几个常用的重要技巧: iz^wBQ
可滚动、更新的记录集 R-Fi`#PG2
批量更新 *>'R
R<
事务处理 ABHZ)OM
Lv^ j
l
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 x b0+4w|
1、取得数据库连接 }\0"gM
1)用DriverManager取数据库连接 b/K&8C,c
例子 ai`:HhE
String className,url,uid,pwd; =!CuCV7$1O
className = "oracle.jdbc.driver.OracleDriver"; %|,<\~P
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; RrZjC
uid = "system"; Nz}Q"6L
pwd = "manager"; kx=AX*I
Class.forName(className); 4a @iR2e
Connection cn = DriverManager.getConnection(url,uid,pwd); ;Z`)*TRp4
2)用jndi(java的命名和目录服务)方式 bp$jD
例子 Q~@8t"P
String jndi = "jdbc/db"; ?0(B;[xEJ
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); O^x t
DataSource ds = (DataSource) ctx.lookup(jndi); nDOIE)#
Connection cn = ds.getConnection(); oPbD9
多用于jsp中 rODKM-7+
2、执行sql语句 \fKE~61
1)用Statement来执行sql语句 `P5"5N\h
String sql; .~U9*5d
Statement sm = cn.createStatement(); LuqaGy}>-
sm.executeQuery(sql); // 执行数据查询语句(select) 0/gcSW
b
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); ;Pa(nUE@
2)用PreparedStatement来执行sql语句 *=7[Ip<X
String sql; ~/x42|t
sql = "insert into user (id,name) values (?,?)"; P&tK}Se^V
PreparedStatement ps = cn.prepareStatement(sql); )g --=w3
ps.setInt(1,xxx); ;dFe >`~
ps.setString(2,xxx); VxFy[rP
... ``<1Lo@
ResultSet rs = ps.executeQuery(); // 查询 ^"l$p,P+
int c = ps.executeUpdate(); // 更新 Qm.kXlsDI
0\#Q;Z2
3、处理执行结果 % *G)*n
查询语句,返回记录集ResultSet lewDR"0Kx
更新语句,返回数字,表示该更新影响的记录数 (
7?%Hg
ResultSet的方法 fA8+SaXW%
1、next(),将游标往后移动一行,如果成功返回true;否则返回false Fq9[:
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 9vbh5xX
7xc<vl#:q7
4、释放连接 Xdq,
=;
cn.close(); *YtNt5u
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection B~NC
~/U0S.C
可滚动、更新的记录集 dc>y7$2
1、创建可滚动、更新的Statement ~ tLR
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); _'7/99]4g}
该Statement取得的ResultSet就是可滚动的 *02( J
2、创建PreparedStatement时指定参数 W*<]`U_.
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); <C$<