加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

JDBC基本操作示例代码

发布时间:2020-12-14 23:38:53 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 package test.jdbc;import java.sql.*;public class JDBCTest { private static Connection conn = null; static{ try { Class.forName("oracle.jdbc.

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

package test.jdbc;

import java.sql.*;

public class JDBCTest {

    private static Connection conn = null;
    static{
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.0.1:1521:SXT","scott","tiger");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //最基本的操作读取
    public void testStmt(){
          ResultSet rs = null;  
          Statement stmt = null;  
          try {
             stmt = conn.createStatement();  
             rs = stmt.executeQuery("select * from dept");  
             while(rs.next()) {  
                  System.out.println(rs.getString("deptno"));  
                  System.out.println(rs.getInt("deptno"));  
             }  
             rs.close();  
             stmt.close();  
             conn.close(); 
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }
    //PreparedStatement读取 
    public void testPrepStmt(){
        PreparedStatement pstmt = null;  
        try {
            pstmt = conn.prepareStatement("insert into dept2 values (?,?,?)");  
            pstmt.setInt(1,33);  
            pstmt.setString(2,"name");  
            pstmt.setString(3,"loc");  
            pstmt.executeUpdate();  
            pstmt.close();  
            conn.close();  
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }
    //调用存储过程 
    public void testProc(){
        CallableStatement cstmt;
        try {
            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();  
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }
    //执行批处理
    public void testBatch(){
         /* 
        9.          Statement stmt = conn.createStatement(); 
        10.         stmt.addBatch("insert into dept2 values (51,'500','haha')"); 
        11.         stmt.addBatch("insert into dept2 values (52,'haha')"); 
        12.         stmt.addBatch("insert into dept2 values (53,'haha')"); 
        13.         stmt.executeBatch(); 
        14.         stmt.close(); 
        15.         */  

         try {
            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,63);  
             ps.setString(2,"bj");  
             ps.addBatch();  

             ps.executeBatch();  
             ps.close();  

             conn.close();  
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }  
    }

    //将整批分批执行批处理
    //这才是理想的解决方案,它避免了SQL注入和内存不足的问题。看看我们如何递增计数器计数,一旦BATCHSIZE 达到 1000,我们调用executeBatch
    public void testBatchs(){
        String sql = "insert into employee (name,city,phone) values (?,?)";
        PreparedStatement ps = conn.prepareStatement(sql);
        final int batchSize = 1000;
        int count = 0;
        for (Employee employee: employees) {
            ps.setString(1,employee.getName());
            ps.setString(2,employee.getCity());
            ps.setString(3,employee.getPhone());
            ps.addBatch();
            if(++count % batchSize == 0) {
                ps.executeBatch();
            }
        }
        ps.executeBatch(); // insert remaining records
        ps.close();
        conn.close();

    }
    //执行事务
    public void testTransaction(){ 
         Statement stmt = null;
         try {
            conn.setAutoCommit(false);
            stmt = conn.createStatement();  
            stmt.addBatch("insert into dept2 values (51,'haha')");  
            stmt.addBatch("insert into dept2 values (52,'haha')");  
            stmt.addBatch("insert into dept2 values (53,'haha')");  
            stmt.executeBatch();  
            conn.commit();  
        } catch (SQLException e) {
            try {
                conn.rollback();
                conn.setAutoCommit(true); 
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }  
            e.printStackTrace();
        }finally{
            try {  
               if(stmt != null)  
                   stmt.close();  
               if(conn != null)  
                   conn.close();  
             } catch (SQLException e) {  
                 e.printStackTrace();  
             }  
        }
    }

}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读