性格決定命運,氣度影響格局
          posts - 20, comments - 18, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          JDBC簡單舉例

          Posted on 2007-08-04 16:10 尚愛軍 閱讀(316) 評論(2)  編輯  收藏

          例子1:
          ****************************************************************
          說明:僅僅實現了數據庫的連接,測試了一條查詢語句                              *
          ****************************************************************
          import java.sql.*;

          public class TestJDBC {


           public static void main(String[] args) {
            ResultSet rs = null;
            Statement stmt = null;
            Connection conn = null;
              
            String driver = "oracle.jdbc.driver.OracleDriver";   
            String url = "jdbc:oracle:thin:@ROBUST:1521:ORACLE9";  
            String userName = "scott";
            String userPassword = "tiger";
           
            try {
             Class.forName(driver);//加載驅動程序。
             conn = DriverManager.getConnection(url, userName, userPassword);//獲得連接。
             stmt = conn.createStatement();                                                                  //獲得statement
             rs = stmt.executeQuery("select * from dept");
             while(rs.next()) {
              System.out.println(rs.getString("deptno"));
              System.out.println(rs.getInt("deptno"));
              System.out.println(rs.getString("dname"));
             }
            } catch (ClassNotFoundException e) {
             e.printStackTrace();
            } catch (SQLException e) {
             e.printStackTrace();
            } finally {
             try {
              if (rs != null) {
               rs.close();
               rs = null;
              }
              
              if (stmt != null) {
               stmt.close();
               stmt = null;
              }
              if (conn != null) {
               conn.close();
               conn = null;
              }

             } catch (SQLException e) {
              e.printStackTrace();
             }

            }

           }

          }

          ***************************************************************
          說明:測試了一條插入語句                                                                            *
          ***************************************************************
          例子2:
          import java.sql.*;
          public class TestDML {

           
           public static void main(String[] args) {
           String driver = "oracle.jdbc.driver.OracleDriver"; 
           String url = "jdbc:oracle:thin:@robust:1521:oracle9";
           String userName = "scott";
           String userPassword = "tiger";
           String sql = "insert into dept values(50,'Shang','Harbin')";
           
           Connection conn = null;
           Statement stmt = null;
           
           try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, userName, userPassword);
            stmt = conn.createStatement();
            stmt.executeUpdate(sql);
            
           } catch (ClassNotFoundException e) {
            e.printStackTrace();
           } catch (SQLException e) {
            e.printStackTrace();  
           } finally {
            try {

             if(stmt != null) {
              stmt.close();
              stmt = null;
             }
              
             if(conn != null) {
              conn.close();
              conn = null;
             }
            } catch (SQLException e) {
             e.printStackTrace();
            }

           }
           

           }

          }
          舉例3
          ********************************************************************
          說明:通過命令行輸入實現數據庫的插入,注意sql語句的寫法                         *
          ********************************************************************                  
          import java.sql.*;

          public class TestDML2 {


           public static void main(String[] args) {
            String driver = "oracle.jdbc.driver.OracleDriver";
            String url = "jdbc:oracle:thin:@robust:1521:oracle9";
            String userName = "scott";
            String userPassword = "tiger";
            int deptno = 0;
            String dname = args[1];
            String loc = args[2];
              
            if(args.length != 3) {
             System.out.println("參數個數輸入錯誤,請重新運行程序!");
             System.exit(-1);
            }
            try{
             deptno = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
             System.out.println("參數輸入錯誤,請輸入數字!");
             System.exit(-1);
            }
            String sql = "insert into dept values (" + deptno + ",'" + dname + "','" + loc + "')";
            
            
          //System.out.println(sql);  
            
            Connection conn = null;
            Statement stmt = null;
            try{
             Class.forName(driver);
             conn = DriverManager.getConnection(url, userName, userPassword);
             stmt = conn.createStatement();
             stmt.executeUpdate(sql);
            }catch (ClassNotFoundException e) {
             e.printStackTrace();
            }catch (SQLException e) {
             e.printStackTrace();
            }finally {
             try {
              if(stmt != null) {
               stmt.close();
               stmt = null;
              }
              if(conn != null) {
               conn.close();
               conn = null;
              }
             } catch (SQLException e) {
              e.printStackTrace();
             }
             

             
            }
           }

          }

          例子4:
          ********************************************************************
          說明:通過命令行輸入實現數據庫的插入,改用了PreparedStatement           *
          ********************************************************************  
          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;
          import java.sql.Statement;
          import java.sql.PreparedStatement;

          public class TestPreparedStmt {


           public static void main(String[] args) {
            String driver = "oracle.jdbc.driver.OracleDriver";
            String url = "jdbc:oracle:thin:@robust:1521:oracle9";
            String userName = "scott";
            String userPassword = "tiger";
            int deptno = 0;
            String dname = args[1];
            String loc = args[2];
              
            if(args.length != 3) {
             System.out.println("參數個數輸入錯誤,請重新運行程序!");
             System.exit(-1);
            }
            try{
             deptno = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
             System.out.println("參數輸入錯誤,請輸入數字!");
             System.exit(-1);
            }
            
            
            
          //System.out.println(sql);  
            
            Connection conn = null;
            PreparedStatement pstmt = null;
            try{
             Class.forName(driver);
             conn = DriverManager.getConnection(url, userName, userPassword);
             pstmt = conn.prepareStatement("insert into dept values (?,?,?)");
             pstmt.setInt(1, deptno);
             pstmt.setString(2, dname);
             pstmt.setString(3, loc);               //1 2 3 表示第1 2 3 個位置。
             pstmt.executeUpdate();

            }catch (ClassNotFoundException e) {
             e.printStackTrace();
            }catch (SQLException e) {
             e.printStackTrace();
            }finally {
             try {
              if(pstmt != null) {
               pstmt.close();
               pstmt = null;
              }
              if(conn != null) {
               conn.close();
               conn = null;
              }
             } catch (SQLException e) {
              e.printStackTrace();
             }
             

             
            }
           }

          }

          例子5:
          ****************************************************************
          說明:java如何調用存儲過程的舉例。                                                           *
          ****************************************************************
          ***************************************************************************  
             create or replace procedure p                                                                                             *
                    ( v_a int number , v_b number ,v_ret out number, v_temp int out number )   *
                is                                                                                                                                           *

               begin                                                                                                                                     *
                      if (v_a > v_b) then                                                                                                      *
                          v_ret :=v_a;                                                                                                             *
                      else                                                                                                                                 *
                         v_ret := v_b;                                                                                                             *
                      end if;                                                                                                                             *
                      v_temp := v_temp + 1;                                                                                              *
                end;                                                                                                                                   *
          ***************************************************************************
          sql語句如上。

          import java.sql.*;
          public class TestProc {

           /**
            * @param args
            */
           public static void main(String[] args) throws Exception {
            
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");
            CallableStatement cstmt = conn.prepareCall("{call p(?, ?, ?, ?)}");
            cstmt.registerOutParameter(3, Types.INTEGER);
            cstmt.registerOutParameter(4, Types.INTEGER);
            cstmt.setInt(1, 3);
            cstmt.setInt(2, 4);
            cstmt.setInt(4, 5);
            cstmt.execute();
            System.out.println(cstmt.getInt(3));
            System.out.println(cstmt.getInt(4));

            cstmt.close();
            conn.close();
           }

          }

          例子6:
          ****************************************************************
          說明:批處理舉例                                                                                              *
          ****************************************************************
          import java.sql.*;
          public class TestBatch {


           public static void main(String[] args) throws Exception {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT", "scott", "tiger");
            /*
            Statement stmt = conn.createStatement();
            stmt.addBatch("insert into dept2 values (51, '500', 'haha')");
            stmt.addBatch("insert into dept2 values (52, '500', 'haha')");
            stmt.addBatch("insert into dept2 values (53, '500', 'haha')");
            stmt.executeBatch();
            stmt.close();
            */
            
            PreparedStatement ps = conn.prepareStatement("insert into dept2 values (?, ?, ?)");
            ps.setInt(1, 61);
            ps.setString(2, "haha");
            ps.setString(3, "bj");
            ps.addBatch();
            
            ps.setInt(1, 62);
            ps.setString(2, "haha");
            ps.setString(3, "bj");
            ps.addBatch();
            
            ps.setInt(1, 63);
            ps.setString(2, "haha");
            ps.setString(3, "bj");
            ps.addBatch();
            
            ps.executeBatch();
            ps.close();
            
            conn.close();

           }

          }

          例子7:
          ****************************************************************
          說明:提交的例子                                                                                             *
          ****************************************************************
          import java.sql.*;
          public class TestTransaction {


           public static void main(String[] args) {
            
            Connection conn = null;
            Statement stmt = null;
            
            try {
             Class.forName("oracle.jdbc.driver.OracleDriver");
             conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:SXT", "scott", "tiger");
             
             conn.setAutoCommit(false);   //將自動提交設置為false
             stmt = conn.createStatement();
             stmt.addBatch("insert into dept2 values (51, '500', 'haha')");
             stmt.addBatch("insert into dept2 values (52, '500', 'haha')");
             stmt.addBatch("insert into dept2 values (53, '500', 'haha')");
             stmt.executeBatch();
             conn.commit();                       //自動提交為false,所以只能手動提交了。
             conn.setAutoCommit(true); 
            } catch (ClassNotFoundException e) {
             e.printStackTrace();
            } catch(SQLException e) {
             
             e.printStackTrace();
             
             try {
              if(conn != null)
              {
               conn.rollback();
               conn.setAutoCommit(true);   //因為這里面是SQLException,說明sql語句出錯了,必須回滾。
              }
             } catch (SQLException e1) {
              e1.printStackTrace();
             }
            }finally {
             try {
              if(stmt != null)
               stmt.close();
              if(conn != null)
               conn.close();
             } catch (SQLException e) {
              e.printStackTrace();
             }
            }
            

           }

          }
          例子8:
          ************************************************************************
          JDBC處理可滾動的結果集                                                                                                *
          ************************************************************************
          import java.sql.*;

          public class TestScroll {
           public static void main(String args[]) {

            try {
             new oracle.jdbc.driver.OracleDriver();
             String url = "jdbc:oracle:thin:@192.168.0.1:1521:SXT";
             Connection conn = DriverManager
               .getConnection(url, "scott", "tiger");
             Statement stmt = conn.createStatement(
               ResultSet.TYPE_SCROLL_INSENSITIVE,
               ResultSet.CONCUR_READ_ONLY);
             ResultSet rs = stmt
               .executeQuery("select * from emp order by sal");
             rs.next();
             System.out.println(rs.getInt(1));
             rs.last();
             System.out.println(rs.getString(1));
             System.out.println(rs.isLast());
             System.out.println(rs.isAfterLast());
             System.out.println(rs.getRow());
             rs.previous();
             System.out.println(rs.getString(1));
             rs.absolute(6);
             System.out.println(rs.getString(1));
             rs.close();
             stmt.close();
             conn.close();
            } catch (SQLException e) {
             e.printStackTrace();
            }
           }
          }


          評論

          # re: JDBC簡單舉例[未登錄]  回復  更多評論   

          2008-07-03 18:14 by yue
          很全面

          # re: JDBC簡單舉例  回復  更多評論   

          2008-07-04 09:24 by owner
          哈哈,謝謝夸獎,好久沒有動靜了

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 嘉荫县| 南开区| 凌源市| 濉溪县| 荔波县| 皮山县| 双鸭山市| 甘孜县| 遵义市| 东方市| 婺源县| 巴林左旗| 尤溪县| 镇远县| 新安县| 常山县| 武川县| 揭西县| 冀州市| 泸州市| 灵石县| 巫山县| 江城| 南汇区| 新乡县| 北海市| 石河子市| 顺平县| 滨海县| 柘城县| 达州市| 伊吾县| 夏河县| 仲巴县| 汤原县| 沙湾县| 应城市| 珠海市| 土默特右旗| 龙泉市| 镇宁|