java中jdbc串連 資料庫代碼

來源:互聯網
上載者:User

#JDBC驅動:不同資料庫間,標準的SQL語句可以移植,而資料庫實際通訊協定及某些資料庫特徵不可移植,因此,JDBC和資料庫之間須還有一層,用於將JDBC調用映射成特定的資料庫調用,此特殊層就是JDBC驅動程式.

常見的JDBC驅動有四種:

》JDBC-ODBC橋,是最早實現的JDBC驅動程式,目的為了快速推廣JDBC,非多線程,能力有限,此驅動程式將JDBC API映射成ODBC API

》直接將JDBC API映射成資料庫特定的用戶端API,這種驅動程式套件含特定資料庫的本地代碼,可用於特定資料庫的用戶端

》支援三層結構的JDBC訪問方式,主要用於Applet階段,通過Applet訪問資料庫

》純java的,直接與資料庫執行個體互動,智能型的,知道資料庫使用的底層協議,是目前最流行的JDBC驅動

Java JDBC串連資料庫代碼展示:

 代碼如下 複製代碼

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBConnection {
    public Connection conn = null; // 聲明Connection對象的執行個體
    public Statement stmt = null; // 聲明Statement對象的執行個體
    public ResultSet rs = null; // 聲明ResultSet對象的執行個體
    //定義儲存資料庫驅動的變數
    private static String dbClassName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
    private static String dbUrl = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB_ATM";
    private static String dbUser = "sa";
    private static String dbPwd = "sa";
    public JDBConnection(String propertyFileName) {// 帶屬性檔案名稱的構造方法
        Properties prop = new Properties();// 屬性集合對象
        InputStream is = null;
        try {
            is = JDBConnection.class.getClassLoader().getResourceAsStream(
                    propertyFileName);// 屬性檔案輸入資料流
            // is = new FileInputStream("src/" + propertyFileName);
            prop.load(is);// 將屬性檔案流裝載到Properties對象中
            is.close();// 關閉流
            dbClassName = prop.getProperty("dbClassName");
            dbUrl = prop.getProperty("dbUrl");
            dbUser = prop.getProperty("dbUser");
            dbPwd = prop.getProperty("dbPwd");
        } catch (Exception e) {
            System.out.println("屬性檔案  " + propertyFileName + " 開啟失敗!");
        }
        try {
            Class.forName(dbClassName);// 1.註冊驅動
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public JDBConnection() {// 預設的不帶參數的建構函式
        try {
            Class.forName(dbClassName);// 1.註冊驅動
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() {
        Connection conn = null;
        try {
            // Class.forName(dbClassName);// 1.註冊驅動
            //2.建立與資料庫的連結
            conn = DriverManager.getConnection(dbUrl, dbUser, dbPwd);
        } catch (Exception ee) {
            ee.printStackTrace();
        }
        if (conn == null) {
         System.err.println("警告: DbConnectionManager.getConnection() 獲得資料庫連結失敗.
         \r\n\r\n連結類型:"
                            + dbClassName
                            + "\r\n連結位置:"
                            + dbUrl
                            + "\r\n使用者/密碼"
                            + dbUser + "/" + dbPwd);
        }
        return conn;
    }
    /*
     * 功能:執行查詢語句
     */
    public ResultSet executeQuery(String sql) {
        try { // 捕捉異常
        // 調用getConnection()方法構造Connection對象的一個執行個體conn
            conn = getConnection(); 
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,//3.建立語句
                    ResultSet.CONCUR_READ_ONLY);
            rs = stmt.executeQuery(sql);//4.執行查詢
        } catch (SQLException ex) {
            System.err.println(ex.getMessage()); // 輸出異常資訊
        }
        return rs; // 返回結果集對象 5.結果處理
    }
    /*
     * 功能:執行更新操作
     */
    public int executeUpdate(String sql) {
        int result = 0; // 定義儲存傳回值的變數
        try { // 捕捉異常
                 // 調用getConnection()方法構造Connection對象的一個執行個體conn
            conn = getConnection();
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                    ResultSet.CONCUR_READ_ONLY);
            result = stmt.executeUpdate(sql); // 執行更新操作
        } catch (SQLException ex) {
            result = 0; // 將儲存傳回值的變數賦值為0
        }
        return result; // 返回儲存傳回值的變數
    }
    /*
     * 功能:關閉資料庫的串連
     */
    public void close() {//6.釋放資源
        try { // 捕捉異常
            try {
                if (rs != null) { // 當ResultSet對象的執行個體rs不為空白時
                    rs.close(); // 關閉ResultSet對象
                }
            } finally {
                try {
                    if (stmt != null) { // 當Statement對象的執行個體stmt不為空白時
                        stmt.close(); // 關閉Statement對象
                    }
                } finally {
                    if (conn != null) { // 當Connection對象的執行個體conn不為空白時
                        conn.close(); // 關閉Connection對象
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace(System.err); // 輸出異常資訊
        }
    }
}

大家需要注意的一些屬性檔案:


dbClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver
dbClassName2=com.mysql.jdbc.Driver
dbPwd=sa
dbPwd2=root
dbUrl=jdbc\:microsoft\:sqlserver\://localhost\:1433;DatabaseName\=DB_ATM
dbUrl2=jdbc\:mysql\://localhost\:3306/db_atm
dbUser=sa
dbUser2=root

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.