社区应用 最新帖子 精华区 社区服务 会员列表 统计排行 社区论坛任务 迷你宠物
  • 7502阅读
  • 1回复

[JAVA]java 数据库基本操作

t_y
级别: 经院硕士
发帖
2080
铜板
4671
人品值
2716
贡献值
3
交易币
0
好评度
2087
信誉值
0
金币
0
所在楼道
java 数据库基本操作 \-c70v63X  
1、java数据库操作基本流程 6 Rg{^ERf  
2、几个常用的重要技巧: qd(`~a  
    可滚动、更新的记录集 <r_ldkZ  
    批量更新 ,US]  
    事务处理 0f1*#8-6  
XlR.Y~  
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 BQ &|=a6  
1、取得数据库连接 ;}1*M !  
  1)用DriverManager取数据库连接 # bP1rQ0  
  例子 mpN|U(n  
    String className,url,uid,pwd; ;CFI*Wfp  
    className = "oracle.jdbc.driver.OracleDriver"; >P/.X^G0  
    url      = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; O?rVa:\  
    uid      = "system"; P!1y@R>Ln  
    pwd      = "manager"; jsH7EhF{'  
    Class.forName(className); W}XDzR'<  
    Connection cn = DriverManager.getConnection(url,uid,pwd); 7H9&\ur9+  
  2)用jndi(java的命名和目录服务)方式 "1WwSh}Z  
  例子 S9U`-\L0  
    String jndi = "jdbc/db"; _6xC4@~h*  
    Context ctx = (Context) new InitialContext().lookup("java:comp/env"); -NHc~=m  
    DataSource ds = (DataSource) ctx.lookup(jndi); [gx6e 44  
    Connection cn = ds.getConnection(); wxN'Lv=R  
  多用于jsp中 t4~Bn<=  
2、执行sql语句 m.Yj{u8zX  
  1)用Statement来执行sql语句 &n91f  
  String sql; c|IH|y  
  Statement sm = cn.createStatement(); &Z#g/Hc  
  sm.executeQuery(sql); // 执行数据查询语句(select) NRgNh5/  
  sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); Xw_AZ-|1D  
  2)用PreparedStatement来执行sql语句 k0Rd:DxO  
  String sql; R~PD[.\u  
  sql  = "insert into user (id,name) values (?,?)"; yC(xi"!  
  PreparedStatement ps = cn.prepareStatement(sql); Y{6y.F*Q#  
  ps.setInt(1,xxx); M9M~[[   
  ps.setString(2,xxx); R:fERj<s  
  ... MB%yC]w8  
  ResultSet rs = ps.executeQuery(); // 查询 {p=`"H>  
  int c = ps.executeUpdate(); // 更新 'MVE5  
  qwoF4_VN  
3、处理执行结果 (V!:6  
  查询语句,返回记录集ResultSet 2mRm.e9?  
  更新语句,返回数字,表示该更新影响的记录数 ]>B>.s  
  ResultSet的方法 <My4 )3  
  1、next(),将游标往后移动一行,如果成功返回true;否则返回false 1-.6psE  
  2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 D!^&*Ia?2  
  :Z3Tyj}4  
4、释放连接 L9W'TvTwo  
  cn.close(); lpv Z[^G  
  一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection o]u,<bM$  
tHgu#k0  
可滚动、更新的记录集 *S%~0=  
1、创建可滚动、更新的Statement WzDL(~m+Z  
  Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); =c8xg/  
  该Statement取得的ResultSet就是可滚动的 }(FF^Mh  
2、创建PreparedStatement时指定参数 @FO= 0_;y  
  PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); )O;6S$z9Y  
  ResultSet.absolute(9000);   vtk0 j  
批量更新 .hPk}B/KV  
1、Statement =ss(~[  
  Statement sm = cn.createStatement(); 8eGq.+5G  
  sm.addBatch(sql1); 62)Qr  
  sm.addBatch(sql2); J2W#vFe\  
  ... Z8I  Y!d  
  sm.executeBatch() waT'|9{  
  一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 THEpW{.E  
2、PreparedStatement ' d' Dlg  
  PreparedStatement ps = cn.preparedStatement(sql); KW`^uoY$  
  { o"wvP~H  
  ps.setXXX(1,xxx); "tdF#>x  
  ... zZR_&z<  
  ps.addBatch(); pL 2P .  
  } @ LPs.e  
  ps.executeBatch(); R2,Z`I  
  一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。 y=.`:EB9b  
  ktF\f[  
事务的处理 a=@]Ov/  
1、关闭Connection的自动提交 C%&A9(jG  
  cn.setAutoCommit(false); PuO5@SP~  
2、执行一系列sql语句 w5Lev}Rb  
  要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close uW;[FTcqy$  
Statement sm ; OYW:I1K<5  
sm = cn.createStatement(insert into user...); f"9aL= 3  
sm.executeUpdate(); \Hb"bv  
sm.close(); S*PcK>  
sm = cn.createStatement("insert into corp...); bAOL<0RS9`  
sm.executeUpdate(); 5NGQWg  
sm.close(); X/Sp!W-H  
3、提交 [L(qrAQ2|z  
  cn.commit(); ^`iqa-1  
4、如果发生异常,那么回滚 ^jh c(ZW"  
  cn.rollback();
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
出来混 迟早都要还
级别: 终身会员
发帖
3743
铜板
8
人品值
493
贡献值
9
交易币
0
好评度
3746
信誉值
0
金币
0
所在楼道
只看该作者 1 发表于: 2007-10-09
好久没用过JDBC连数据库了  习惯Hibernate ibatis和Toplink
描述
快速回复

您目前还是游客,请 登录注册
温馨提示:欢迎交流讨论,请勿纯表情、纯引用!
认证码:
验证问题:
10+5=?,请输入中文答案:十五