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

[JAVA]java 数据库基本操作

t_y
级别: 经院硕士
发帖
2080
铜板
4671
人品值
2716
贡献值
3
交易币
0
好评度
2087
信誉值
0
金币
0
所在楼道
java 数据库基本操作 NrNxI'M G  
1、java数据库操作基本流程 Cq<a|t  
2、几个常用的重要技巧: t9!8Bh<  
    可滚动、更新的记录集 *h H\H  
    批量更新 +V N&kCx)  
    事务处理 &:}{?vU  
&B;M.sz~C4  
java数据库操作基本流程:取得数据库连接 - 执行sql语句 - 处理执行结果 - 释放数据库连接 *k(|r>  
1、取得数据库连接 L^7"I 4=(D  
  1)用DriverManager取数据库连接 \["'%8[:gR  
  例子 'f?=ks<  
    String className,url,uid,pwd; b!pG&7P  
    className = "oracle.jdbc.driver.OracleDriver"; /W vgC)  
    url      = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr; 8 <~E;:  
    uid      = "system"; )-RI  
    pwd      = "manager"; ~zcHpxO^W  
    Class.forName(className); 4"=(kC~~  
    Connection cn = DriverManager.getConnection(url,uid,pwd); 6dzY9   
  2)用jndi(java的命名和目录服务)方式 #y?iUv  
  例子 'JjW5  
    String jndi = "jdbc/db"; sNF[-,a  
    Context ctx = (Context) new InitialContext().lookup("java:comp/env"); ;(Xig$k  
    DataSource ds = (DataSource) ctx.lookup(jndi); hm&cRehU  
    Connection cn = ds.getConnection(); sK&[sN33  
  多用于jsp中 u=U. +\f5  
2、执行sql语句 |$)+h\h  
  1)用Statement来执行sql语句 K).Gj2 $  
  String sql; LzS)WjEN  
  Statement sm = cn.createStatement(); [ q% Rx!L  
  sm.executeQuery(sql); // 执行数据查询语句(select) l-} );zH74  
  sm.executeUpdate(sql); // 执行数据更新语句(delete、update、insert、drop等)statement.close(); @_+B'<2  
  2)用PreparedStatement来执行sql语句 '/ >7pB  
  String sql; <6djdr1:b  
  sql  = "insert into user (id,name) values (?,?)"; 8,l~e8&  
  PreparedStatement ps = cn.prepareStatement(sql); !n?8'eqWru  
  ps.setInt(1,xxx); &F!Ct(c99  
  ps.setString(2,xxx); AMm)E  
  ... uxKj7!(#  
  ResultSet rs = ps.executeQuery(); // 查询 6UXDIg=  
  int c = ps.executeUpdate(); // 更新 zj+.MG04  
  Ha}TdQ%  
3、处理执行结果 8d!t"oj68  
  查询语句,返回记录集ResultSet da,Bnze0  
  更新语句,返回数字,表示该更新影响的记录数 -k+}w_<Q  
  ResultSet的方法 Ul/Uk n$  
  1、next(),将游标往后移动一行,如果成功返回true;否则返回false z|^+uL  
  2、getInt("id")或getSting("name"),返回当前游标下某个字段的值 E76#xsyhF  
  Cd"cU~HAB  
4、释放连接 6^'BhHP  
  cn.close(); { +$zgg  
  一般,先关闭ResultSet,然后关闭Statement(或者PreparedStatement);最后关闭Connection &`9p.  
lo!.%PP|  
可滚动、更新的记录集 >[D(<b(U&  
1、创建可滚动、更新的Statement  V/8"@C  
  Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY); DUAI  
  该Statement取得的ResultSet就是可滚动的 T08SGB]  
2、创建PreparedStatement时指定参数 gZ^'hW-{  
  PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY); zo^34wW^  
  ResultSet.absolute(9000);  p1blPBlp  
批量更新 |@+/R .l  
1、Statement V=?qU&r<+  
  Statement sm = cn.createStatement(); k v>rv37u  
  sm.addBatch(sql1); xe!([^l&  
  sm.addBatch(sql2); z"vI-~,YU  
  ... ZSUbPz  
  sm.executeBatch() ?q %&"  
  一个Statement对象,可以执行多个sql语句以后,批量更新。这多个语句可以是delete、update、insert等或兼有 [T<Z?  
2、PreparedStatement He}uE0^  
  PreparedStatement ps = cn.preparedStatement(sql); G%RL8HU  
  { &Se!AcvKF  
  ps.setXXX(1,xxx); ?4^8C4  
  ... +IM: jrT(  
  ps.addBatch(); KbcmK( `_  
  } c=52*&  
  ps.executeBatch(); CHojF+e  
  一个PreparedStatement,可以把一个sql语句,变换参数多次执行,一次更新。 I_k!'zR[N  
  'T7=.Hq<4  
事务的处理 [ljC S  
1、关闭Connection的自动提交 {wNNp't7  
  cn.setAutoCommit(false); 0<n*8t?A-  
2、执行一系列sql语句 wt(Hk6/B  
  要点:执行每一个新的sql语句前,上一次执行sql语句的Statement(或者PreparedStatemet)必须先close hYI0S7{G  
Statement sm ; 1e'Ez4*  
sm = cn.createStatement(insert into user...); jk\04k  
sm.executeUpdate(); :Nt_LsH  
sm.close(); \mIm}+!H  
sm = cn.createStatement("insert into corp...); L6ifT`;T  
sm.executeUpdate(); ~:ldGfb|  
sm.close(); *>#mI/#}  
3、提交 T0Kjnzs  
  cn.commit(); naHQeX;  
4、如果发生异常,那么回滚 EW:tb-%`  
  cn.rollback();
评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

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

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