java 數據庫基本操作

          java 數據庫基本操作

            1、java數據庫操作基本流程

            2、幾個常用的重要技巧:

            ·可滾動、更新的記錄集

            ·批量更新

            ·事務處理

            java數據庫操作基本流程:取得數據庫連接 - 執行sql語句 - 處理執行結果 - 釋放數據庫連接

            1、取得數據庫連接

            1)用DriverManager取數據庫連接

            例子

            String className,url,uid,pwd;

            className = "oracle.jdbc.driver.OracleDriver";

            url = "jdbc:oracle:thin:@127.0.0.1:1521:orasvr;

            uid = "system";

            pwd = "manager";

            Class.forName(className);

            Connection cn = DriverManager.getConnection(url,uid,pwd);

            2)用jndi(java的命名和目錄服務)方式

            例子

            String jndi = "jdbc/db";

            Context ctx = (Context) new InitialContext().lookup("java:comp/env");

            DataSource ds = (DataSource) ctx.lookup(jndi);

            Connection cn = ds.getConnection();

            多用于jsp中

            2、執行sql語句

            1)用Statement來執行sql語句

            String sql;

            Statement sm = cn.createStatement();

            sm.executeQuery(sql); // 執行數據查詢語句(select)

            sm.executeUpdate(sql); // 執行數據更新語句(delete、update、insert、drop等)statement.close();

            2)用PreparedStatement來執行sql語句

            String sql;

            sql = "insert into user (id,name) values (?,?)";

            PreparedStatement ps = cn.prepareStatement(sql);

            ps.setInt(1,xxx);

            ps.setString(2,xxx);

            ...

            ResultSet rs = ps.executeQuery(); // 查詢

            int c = ps.executeUpdate(); // 更新

            3、處理執行結果

            查詢語句,返回記錄集ResultSet

            更新語句,返回數字,表示該更新影響的記錄數

            ResultSet的方法

            1、next(),將游標往后移動一行,如果成功返回true;否則返回false

            2、getInt("id")或getSting("name"),返回當前游標下某個字段的值

            4、釋放連接

            cn.close();

            一般,先關閉ResultSet,然后關閉Statement(或者PreparedStatement);最后關閉Connection

            可滾動、更新的記錄集

            1、創建可滾動、更新的Statement

            Statement sm = cn.createStatement(ResultSet.TYPE_SCROLL_ENSITIVE,ResultSet.CONCUR_READ_ONLY);

            該Statement取得的ResultSet就是可滾動的

            2、創建PreparedStatement時指定參數

            PreparedStatemet ps = cn.prepareStatement(sql,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);

            ResultSet.absolute(9000);

            ·批量更新

            1、Statement

            Statement sm = cn.createStatement();

            sm.addBatch(sql1);

            sm.addBatch(sql2);

            ...

            sm.executeBatch()

            一個Statement對象,可以執行多個sql語句以后,批量更新。這多個語句可以是delete、update、insert等或兼有

            2、PreparedStatement

            PreparedStatement ps = cn.preparedStatement(sql);

            {

            ps.setXXX(1,xxx);

            ...

            ps.addBatch();

            }

            ps.executeBatch();

            一個PreparedStatement,可以把一個sql語句,變換參數多次執行,一次更新。

            ·事務的處理

            1、關閉Connection的自動提交

            cn.setAutoCommit(false);

            2、執行一系列sql語句

            要點:執行每一個新的sql語句前,上一次執行sql語句的Statement(或者PreparedStatemet)必須先close

            Statement sm ;

            sm = cn.createStatement(insert into user...);

            sm.executeUpdate();

            sm.close();

            sm = cn.createStatement("insert into corp...);

            sm.executeUpdate();

            sm.close();

            3、提交

            cn.commit();

            4、如果發生異常,那么回滾

            cn.rollback();

          posted on 2008-01-10 11:37 靈! 閱讀(236) 評論(0)  編輯  收藏 所屬分類: Java技術-基礎語法Java技術-數據庫操作

          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          隨筆分類

          隨筆檔案

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 古蔺县| 大城县| 临朐县| 清水县| 嘉黎县| 武义县| 泸州市| 抚顺县| 多伦县| 桦南县| 扬中市| 辰溪县| 庄浪县| 资溪县| 依安县| 忻城县| 海南省| 沅陵县| 青田县| 黄冈市| 泰兴市| 海伦市| 通海县| 武城县| 进贤县| 织金县| 松原市| 老河口市| 沁水县| 光山县| 都兰县| 高唐县| 西充县| 革吉县| 平顺县| 海兴县| 陈巴尔虎旗| 玛沁县| 塘沽区| 石阡县| 六枝特区|