熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Java數據庫編程中的幾個常用技巧

2013-11-23 20:17:30  來源: Java開源技術 

  java數據庫操作基本流程
  
  幾個常用的重要技巧
  
  可滾動更新的記錄集
  
  批量更新
  
  事務處理
  
  java數據庫操作基本流程取得數據庫連接 執行sql語句 處理執行結果 釋放數據庫連接
  
  取得數據庫連接
  
  )用DriverManager取數據庫連接
  
  例子
  
  String classNameurluidpwd;
  className = oraclejdbcdriverOracleDriver;
  url = jdbc:oracle:thin:@::orasvr;
  uid = system;
  pwd = manager;
  ClassforName(className);
  Connection cn = DriverManagergetConnection(urluidpwd);
  
  )用jndi(java的命名和目錄服務)方式
  
  例子
  
  String jndi = jdbc/db;
  Context ctx = (Context) new InitialContext()lookup(java:comp/env);
  DataSource ds = (DataSource) ctxlookup(jndi);
  Connection cn = dsgetConnection();
  
  多用於jsp中
  
  執行sql語句
  
  )用Statement來執行sql語句
  
  String sql;
  Statement sm = cncreateStatement();
  smexecuteQuery(sql); // 執行數據查詢語句(select)
  smexecuteUpdate(sql); // 執行數據更新語句(deleteupdateinsertdrop等)statementclose();
  
  )用PreparedStatement來執行sql語句
  
  String sql;
  sql = insert into user (idname) values (??);
  PreparedStatement ps = cnprepareStatement(sql);
  pssetInt(xxx);
  pssetString(xxx);
  
  ResultSet rs = psexecuteQuery(); // 查詢
  int c = psexecuteUpdate(); // 更新
  
  處理執行結果
  
  查詢語句返回記錄集ResultSet
  
  更新語句返回數字表示該更新影響的記錄數
  
  ResultSet的方法
  
  next()將游標往後移動一行如果成功返回true否則返回false
  
  getInt(id)或getSting(name)返回當前游標下某個字段的值
  
  釋放連接
  
  cnclose();
  
  一般先關閉ResultSet然後關閉Statement(或者PreparedStatement)最後關閉Connection
  
  可滾動更新的記錄集
  
  創建可滾動更新的Statement
  
  Statement sm = cncreateStatement(ResultSetTYPE_SCROLL_ENSITIVEResultSetCONCUR_READ_ONLY);
  
  該Statement取得的ResultSet就是可滾動的
  
  創建PreparedStatement時指定參數
  
  PreparedStatemet ps = cnprepareStatement(sqlResultSetTYPE_SCROLL_INSENSITIVEResultSetCONCUR_READ_ONLY);
  
  ResultSetabsolute();
  
  批量更新
  
  Statement
  
  Statement sm = cncreateStatement();
  smaddBatch(sql);
  smaddBatch(sql);
  
  smexecuteBatch()
  
  一個Statement對象可以執行多個sql語句以後批量更新這多個語句可以是deleteupdateinsert等或兼有
  
  PreparedStatement
  
  PreparedStatement ps = cnpreparedStatement(sql);
  {
  pssetXXX(xxx);
  
  psaddBatch();
  }
  psexecuteBatch();
  
  一個PreparedStatement可以把一個sql語句變換參數多次執行一次更新
  
  事務的處理
  
  關閉Connection的自動提交
  
  cnsetAutoCommit(false);
  
  執行一系列sql語句
  
  要點執行每一個新的sql語句前上一次執行sql語句的Statement(或者PreparedStatemet)必須先close
  
  Statement sm ;
  sm = cncreateStatement(insert into user);
  smexecuteUpdate();
  smclose();
  
  sm = cncreateStatement(insert into corp);
  smexecuteUpdate();
  smclose();
  
  提交
  
  mit();
  
  如果發生異常那麼回滾
  
  cnrollback();
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28249.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.