JDBC第一篇--【介紹JDBC、使用JDBC鏈接數據庫、簡單的工具類】

1.什麼是JDBC

JDBC全稱爲:Java Data Base Connectivity,它是能夠執行SQL語句的Java APIjava

2.爲何咱們要用JDBC

  • 市面上有很是多的數據庫,原本咱們是須要根據不一樣的數據庫學習不一樣的API,sun公司爲了簡化這個操做,定義了JDBC API【接口】
  • sun公司只是提供了JDBC API【接口】,數據庫廠商負責實現。
  • 對於咱們來講,操做數據庫都是在JDBC API【接口】上,使用不一樣的數據庫,只要用數據庫廠商提供的數據庫驅動程序便可
  • 這大大簡化了咱們的學習成本

3.簡單操做JDBC

步驟:mysql

  1. 導入MySQL或者Oracle驅動包
  2. 裝載數據庫驅動程序
  3. 獲取到與數據庫鏈接
  4. 獲取能夠執行SQL語句的對象
  5. 執行SQL語句
  6. 關閉鏈接
Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {

            /* * 加載驅動有兩種方式 * * 1:會致使驅動會註冊兩次,過分依賴於mysql的api,脫離的mysql的開發包,程序則沒法編譯 * 2:驅動只會加載一次,不須要依賴具體的驅動,靈活性高 * * 咱們通常都是使用第二種方式 * */

            //1.
            //DriverManager.registerDriver(new com.mysql.jdbc.Driver());

            //2.
            Class.forName("com.mysql.jdbc.Driver");

            //獲取與數據庫鏈接的對象-Connetcion
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");

            //獲取執行sql語句的statement對象
            statement = connection.createStatement();

            //執行sql語句,拿到結果集
            resultSet = statement.executeQuery("SELECT * FROM users");

            //遍歷結果集,獲得數據
            while (resultSet.next()) {

                System.out.println(resultSet.getString(1));

                System.out.println(resultSet.getString(2));
            }

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

            /* * 關閉資源,後調用的先關閉 * * 關閉以前,要判斷對象是否存在 * */

            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }

            }

        }

上面咱們已經簡單使用JDBC去查詢數據庫的數據了,接下來咱們去了解一下上面代碼用到的對象sql


4.Connection對象

客戶端與數據庫全部的交互都是經過Connection來完成的。數據庫

經常使用的方法:api

//建立向數據庫發送sql的statement對象。

createcreateStatement()

//建立向數據庫發送預編譯sql的PrepareSatement對象。

prepareStatement(sql) 

//建立執行存儲過程的callableStatement對象

prepareCall(sql)

//設置事務自動提交

setAutoCommit(boolean autoCommit)

//提交事務

commit()

//回滾事務

rollback()

5.Statement對象

Statement對象用於向數據庫發送Sql語句,對數據庫的增刪改查均可以經過此對象發送sql語句完成。markdown

Statement對象的經常使用方法:工具

//查詢

executeQuery(String sql)

//增刪改

executeUpdate(String sql)

//任意sql語句均可以,可是目標不明確,不多用

execute(String sql)

//把多條的sql語句放進同一個批處理中

addBatch(String sql)

//向數據庫發送一批sql語句執行

executeBatch()

6.ResultSet對象

ResultSet對象表明Sql語句的執行結果,當Statement對象執行executeQuery()時,會返回一個ResultSet對象學習

ResultSet對象維護了一個數據行的遊標【簡單理解成指針】,調用ResultSet.next()方法,可讓遊標指向具體的數據行,進行獲取該行的數據url

經常使用方法:spa

//獲取任意類型的數據

getObject(String columnName)

//獲取指定類型的數據【各類類型,查看API】

getString(String columnName)

//對結果集進行滾動查看的方法

next()

Previous()

absolute(int row)

beforeFirst()

afterLast()

7.寫一個簡單工具類

經過上面的理解,咱們已經可以使用JDBC對數據庫的數據進行增刪改查了,咱們發現,不管增刪改查都須要鏈接數據庫,關閉資源,因此咱們把鏈接數據庫,釋放資源的操做抽取到一個工具類

/* * 鏈接數據庫的driver,url,username,password經過配置文件來配置,能夠增長靈活性 * 當咱們須要切換數據庫的時候,只須要在配置文件中改以上的信息便可 * * */

    private static String  driver = null;
    private static String  url = null;
    private static String  username = null;
    private static String password = null;

    static {
        try {

            //獲取配置文件的讀入流
            InputStream inputStream = UtilsDemo.class.getClassLoader().getResourceAsStream("db.properties");

            Properties properties = new Properties();
            properties.load(inputStream);

            //獲取配置文件的信息
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");

            //加載驅動類
            Class.forName(driver);


        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }
    public static void release(Connection connection, Statement statement, ResultSet resultSet) {

        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
相關文章
相關標籤/搜索