程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> JDBC(用Eclipse操作數據庫Oracle)的基礎操作集合,jdbceclipse

JDBC(用Eclipse操作數據庫Oracle)的基礎操作集合,jdbceclipse

編輯:Oracle教程

JDBC(用Eclipse操作數據庫Oracle)的基礎操作集合,jdbceclipse


  JDBC:

    JDBC(Java Data Base Connectivity,java數據庫連接)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一訪問,它由一組用Java語言編寫的類和接口組成。JDBC提供了一種基准,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。

      使用Eclipse來操作數據庫有六個步驟:

      1 加載驅動

      2 獲取鏈接對象

      3 創建語句對象

      4 循環取得結果集

        5 再循環中數據類型轉換

      6 關閉資源

      接下來做一些簡單的JDBC代碼實例

    注:下面的代碼我用是throws Exception來拋出異常,會使結構不太嚴謹,因為是初學,所有沒有貼出嚴謹結構的代碼,會在最後補充。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;


public class JDBC {

    public static void main(String[] args) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException {
        //產生JDBC Driver對象,三種方法
        Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
        new oracle.jdbc.driver.OracleDriver();
        Class.forName("oracle.jdbc.driver.OracleDriver");//這個Driver的實例化在構建過程中會自動向DriverManager自動注冊
        //連接數據庫
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","c##scott","root");//拿到數據庫的鏈接
        
        //創建語句對象statement,作用:調用方法向數據庫傳遞SQL語句,並接受數據庫返回的結果集
        java.sql.Statement sts = conn.createStatement();
        ResultSet rs = sts.executeQuery("select * from a_tab"); //在第一條記錄的前一位,
        rs.next();
        
        //循環取得結果集
        
        
        while (rs.next()) {
            //轉化數據類型
            System.out.print(rs.getInt("id") + " ");
            System.out.print(rs.getString("name") + " ");
            System.out.println(rs.getString("ad") + " ");
        }
        
        //關閉資源
        rs.close();
        sts.close();
        conn.close();
    }

}

循環取得結果集:

往數據庫中添加數據:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class JDBC_03{
    public static void main(String[] args) throws Exception{
        //1 加載驅動  就是實例化鏈接對象
        Class.forName("oracle.jdbc.driver.OracleDriver");
        //2 獲取數據庫的鏈接
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "c##scott", "root");
        //3 創建語句對象  傳輸語句並執行  還要接收返回的結果集
        Statement ss = conn.createStatement();
        String sql ="insert into a_tab values(123,'xiaoming','beijing')"; 
        System.out.println(sql);
        ss.execute(sql);
        //6 關閉資源
        ss.close();
        conn.close();
    }
}

換一種方法:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

import oracle.jdbc.OracleDriver;


public class JDBC_04 {

    public static void main(String[] args) throws SQLException{
        
        if (args.length != 3) {
            System.out.println("請輸入三個值");
            System.exit(1);
            
        }
        int id = Integer.parseInt(args[0]);
        String name = args[1];
        String ad = args[2];
        
        //加載驅動
        new OracleDriver();
        //獲取鏈接,
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "c##scott", "root");
        //創建語句
        Statement st = conn.createStatement();
        String sql = "insert into a_tab values('"+ id + "','"+ name +"','"+ ad +"')";
        System.out.println(sql);
        st.executeUpdate(sql);
        //關閉資源
        st.close();
        conn.close();
    }

}

使用batch來添加:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;

import oracle.jdbc.driver.OracleDriver;


public class JDBC_06 {

    public static void main(String[] args) throws Exception{
        //加載驅動
        new OracleDriver();
        //連接數據庫
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "c##scott", "root");
        //創建語句
        Statement stmt = conn.createStatement();
        stmt.addBatch("insert into a_tab values(10001,'hello0','addbatch')");
        stmt.addBatch("insert into a_tab values(10001,'hello0','addbatch')");
        stmt.addBatch("insert into a_tab values(10001,'hello0','addbatch')");
        /*PreparedStatement st = conn.prepareStatement("insert into a_tab values(?,?,?)") ;
        st.setInt(1, 123);
        st.setString(2, "xiaoxiao");
        st.setString(3, "beijing");
        st.addBatch();
        
        st.setInt(1, 120);
        st.setString(2, "xiaoxiao");
        st.setString(3, "beijing");
        st.addBatch();
        st.executeBatch();
        */
        stmt.executeBatch();
        
        //關閉
        stmt.close();
        conn.close();
        
    }

}

使用事務:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import oracle.jdbc.OracleDriver;


public class JDBC_08 {

    public static void main(String[] args) throws Exception{
        //加載驅動
        new OracleDriver();
        //鏈接對象
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","c##scott","root");
        //傳輸對象
        Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//並發只讀模式
        //如果沒有第一個參數  只能用resultset裡面的next();
        //有了這個參數 就能用所有方法
        ResultSet rs = st.executeQuery("select * from a_tab");
        rs.next();//從頭頂進入第一行
        System.out.println(rs.getInt(1));//第一行第一列
        System.out.println(rs.getString(2));
        System.out.println(rs.getString(3));
        System.out.println(rs.getString(1));
        System.out.println("----------------");
        rs.last();
        System.out.println(rs.getInt("id"));
        System.out.println(rs.isLast() + "-----");
        
        rs.absolute(2);
        System.out.println(rs.getInt(1) + "absolute 2");
        
        rs.previous();
        System.out.println(rs.getInt(1) + "previous");
    }
    

}

最後來個集合,對數據的基本操作:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import oracle.jdbc.driver.OracleDriver;
import oracle.net.aso.s;


public class JDBC_09 {

    public static void main(String[] args) throws Exception{
        //加載驅動
        new OracleDriver();
        //鏈接對象
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","c##scott","root");
        //傳輸對象
        Statement sts = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);//並發可更新
        //結果集對象
        ResultSet rs = sts.executeQuery("select ID,NAME,AD from a_tab");
        //結果處理
        rs.next();
        //增
        rs.updateInt(1, 9900);//第一個字段,9999
        rs.updateString("NAME", "aobama");
        rs.updateString("AD", "baigong");
        //rs.insertRow();//把這行插入結果集和數據庫
        
        
        rs.moveToCurrentRow();//把光標移動到新建的行
        
        //刪
        rs.absolute(2);//移動到指定行
        rs.deleteRow();//刪除改行
        
        //改
        rs.updateString("NAME", "newyue");//更改內存中的數據集中的數據
        rs.updateRow();//把更改的數據更新到數據庫中
        //關閉
        rs.close();
        sts.close();
        conn.close();
        
    }

}

嚴謹代碼(以後工作中要使用嚴謹的代碼結構,否則會被老板罵死的):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.omg.CORBA.COMM_FAILURE;

/**
 * try catch
 * ClassNotFoundException    SQLException 
 * 
 * oracle\product\12.1.0\dbhome_1\jdbc\lib 把這個目錄下面的 ojdbc7.jar 拿到 當前項目中 --
 * 簡單使用jdbc 6步 : 
 * 1 加載驅動
 * 2 獲取鏈接/或者說鏈接數據庫 
 * 3 創建語句對象 statement 作用: 
 * 4 循環取得結果集 
 * 5在循環結果集中數據類型進行轉換 
 * 6 關閉資源
 */
public class JDBC_00_Decktop {

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            //<一> 產生JDBC driver對象 就是說 加載驅動 有三種方法
            //1.1 forName句柄 加載文件 獲取實例
            Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
            //1.2 跟上面一樣
            //這個Driver實例在構建過程中會向DriverManager裡面自動注冊,不用自己管
            Class.forName("oracle.jdbc.driver.OracleDriver");
            //1.3 直接實例化
            new oracle.jdbc.driver.OracleDriver();
            
            //<二> 連接數據庫 --- 就是通過DriverManager的獲取鏈接方法 傳過去三個函數,數據庫路徑 用戶名  密碼
            conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "system", "root");
            
            //<三> 創建語句對象 Statement 作用:調用方法向數據庫傳遞SQL語句,並接收返回的結果集。
            stmt = conn.createStatement();
            //----結果集怎麼獲取
            rs = stmt.executeQuery("select * from c##scott.emp");//字符串內不用加分號
            //rs 在第一條記錄的上方
            //rs.next();//返回的是boolean型
            System.out.println("EMPNO     ENAME     JOB     MGR     HIREDATE                  SAL     COMM     DEPTNO");
            
            //<四> 循環獲取結果集
            while (rs.next()) {
                //<五> 在循環中把數據類型進行轉換得到自己想要的數據類型(java對應的數據類型)  其實我們可以隨意轉換,只要不失去精度就可以
                System.out.print(rs.getString("empno")+"    ");
                System.out.print(rs.getString("ename")+"    ");
                System.out.print(rs.getString("job")+"    ");
                System.out.print(rs.getInt("mgr")+"    ");
                System.out.print(rs.getString("hiredate")+"    ");
                System.out.print(rs.getInt("sal")+"    ");
                System.out.print(rs.getInt("comm")+"    ");
                System.out.println(rs.getInt("deptno")+"    ");
                
                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try{
                if (rs != null) {
                    rs.close();
                }
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
                }catch (SQLException e2) {
                    e2.printStackTrace();
                }
            }
        }
    }

以上就是我在JDBC中的所學,望各位斧正!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved