java 数据库基本操作 $o1Gxz
1、java数据库操作基本流程 0Km{fZYq7;
2、几个常用的重要技巧: xp>ra2A
可滚动、更新的记录集 K-_e' )22.
批量更新 d:=5y)
事务处理 v D}y%}
b\VY)=U
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 +l&ZN\@0X
1、取得数据库连接 Y@^MU->+
1)用DriverManager取数据库连接 m]Z&
.,bA
例子 bv$)^
String className,url,uid,pwd;
&gcKv1a\
className = "oracle.jdbc.driver.OracleDriver";
+<AX
0(
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; ~++y4NB8Q
uid = "system"; X )g<F
pwd = "manager"; 0rA&_K[#-<
Class.forName(className); J0lTp /
Connection cn = DriverManager.getConnection(url,uid,pwd); QSEf
2)用jndi(java的命名和目录服务)方式 @y)-!MHN(8
例子 cq
%=DZ
String jndi = "jdbc/db"; 3MiNJi#=2
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); zn>*^h0B
DataSource ds = (DataSource) ctx.lookup(jndi); m/%sBw\rx
Connection cn = ds.getConnection(); =f{V<i~q
多用于jsp中 SgFyv<6>:
2、执行sql语句 oC.:mI
1)用Statement来执行sql语句 +!dIEt).U
String sql; 4wMKl6mL
Statement sm = cn.createStatement(); r/+<_3
sm.executeQuery(sql); // 执行数据查询语句(select) W9{6?,]
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); 8GV$L~i
2)用PreparedStatement来执行sql语句 Nx;U]O6A
String sql; avykg(
sql = "insert into user (id,name) values (?,?)"; $
;~G
PreparedStatement ps = cn.prepareStatement(sql); .P9ALJP(b
ps.setInt(1,xxx); :_i1)4[!
ps.setString(2,xxx); =MRg
... oAA%pZ@
ResultSet rs = ps.executeQuery(); // 查询 92bvmP*o4
int c = ps.executeUpdate(); // 更新 PDzVXLpC
g
O,X
3、处理执行结果 %#yCp2
查询语句,返回记录集ResultSet S3`zB?7,
更新语句,返回数字,表示该更新影响的记录数 Y)g7
E"
ResultSet的方法 kf~ D m}bV
1、next(),将游标往后移动一行,如果成功返回true;否则返回false ~z ^VMr
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 89U<9j
Pj8s;#~u
4、释放连接 yfnqu4Cn
cn.close(); qeb:n$
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection }aRV)F
uw&GXOzew9
可滚动、更新的记录集 S`5^H~
1、创建可滚动、更新的Statement ~}i&gd|(
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); (`k0tC2
该Statement取得的ResultSet就是可滚动的 #&\^{Z
2、创建PreparedStatement时指定参数 W0K&mBu
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); <}pqj3
ResultSet.absolute(9000); Uz>5!_
批量更新 W r);A{
1、Statement h$_Wh(
Statement sm = cn.createStatement(); \RnGKQ"4
sm.addBatch(sql1); Ts:3_4-k
sm.addBatch(sql2); u7UqN
... $C##S@
sm.executeBatch() /Tv=BXL-
一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 zT6ng#
2、PreparedStatement C=t:0.:PJ
PreparedStatement ps = cn.preparedStatement(sql); 4~53%=+
{ !t3)j>h:
ps.setXXX(1,xxx); .[? E1we
... S&Q1