java 数据库基本操作 liEPCWl&
1、java数据库操作基本流程 -VZ-<\uH
2、几个常用的重要技巧: `id9j
可滚动、更新的记录集 mCRt8rY;
批量更新 ?m![Pg%
事务处理 PxF<\pu&
U!T~!C^
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 WJ)z6m]
1、取得数据库连接 -\+s#kE:
1)用DriverManager取数据库连接 ~L]|?d"
例子 UsgK
String className,url,uid,pwd; ()`7L|(`;q
className = "oracle.jdbc.driver.OracleDriver"; X(!Cfb8+5
url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; %lL.[8r|
uid = "system"; ]d55m /(
pwd = "manager"; 2*rH?dz8E
Class.forName(className); $J4 *U
Connection cn = DriverManager.getConnection(url,uid,pwd); IOTR/anu
2)用jndi(java的命名和目录服务)方式 DvME1]7)
例子 ~0?mBy!-O
String jndi = "jdbc/db"; Q)"C&)`l
Context ctx = (Context) new InitialContext().lookup("java:comp/env"); 0YaA `
DataSource ds = (DataSource) ctx.lookup(jndi); k $M]3}$U
Connection cn = ds.getConnection(); h
a|C&G
多用于jsp中 n-5W*zk1
2、执行sql语句 EJ@?h(O
1)用Statement来执行sql语句
h1:aKm!
String sql; J~=n`pW
Statement sm = cn.createStatement(); >oea{u
sm.executeQuery(sql); // 执行数据查询语句(select) s~X+*@.
sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); yphS'AG
2)用PreparedStatement来执行sql语句 _,q) hOI
String sql; AoY-\E
sql = "insert into user (id,name) values (?,?)"; X7[^s
$VK
PreparedStatement ps = cn.prepareStatement(sql); f @8mS
ps.setInt(1,xxx); pa#d L!J
ps.setString(2,xxx); %R1 tJ( /
... H&F9J^rC
ResultSet rs = ps.executeQuery(); // 查询 A01AlK_B
int c = ps.executeUpdate(); // 更新 C?ulj9=Z
Z:ni$7<.
3、处理执行结果 1[kMOp
查询语句,返回记录集ResultSet -r#X~2tPzD
更新语句,返回数字,表示该更新影响的记录数 whonDG4WP
ResultSet的方法 rxr{/8%f%
1、next(),将游标往后移动一行,如果成功返回true;否则返回false M@h|bN
2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 CQwL|$)]Y
(E/lIou
4、释放连接 Fd?"-
cn.close(); +$X#q8j06
一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection A3vUPWdDk
1<+2kBuY
可滚动、更新的记录集 kR]!Vr*yh
1、创建可滚动、更新的Statement ?!wgH9?8
Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); ktnuNsp
该Statement取得的ResultSet就是可滚动的 m1n.g4Z&*
2、创建PreparedStatement时指定参数 jxiC
Kx,G
PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); U;bK!&