成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JDBC【介紹JDBC、使用JDBC連接數(shù)據(jù)庫、簡單的工具類】

MSchumi / 2538人閱讀

摘要:常用的方法創(chuàng)建向數(shù)據(jù)庫發(fā)送的對象。創(chuàng)建執(zhí)行存儲過程的對象設(shè)置事務(wù)自動提交提交事務(wù)回滾事務(wù)對象對象用于向數(shù)據(jù)庫發(fā)送語句,對數(shù)據(jù)庫的增刪改查都可以通過此對象發(fā)送語句完成。

1.什么是JDBC

JDBC全稱為:Java Data Base Connectivity,它是可以執(zhí)行SQL語句的Java API

2.為什么我們要用JDBC

市面上有非常多的數(shù)據(jù)庫,本來我們是需要根據(jù)不同的數(shù)據(jù)庫學(xué)習(xí)不同的API,sun公司為了簡化這個操作,定義了JDBC API【接口】

sun公司只是提供了JDBC API【接口】,數(shù)據(jù)庫廠商負責實現(xiàn)。

對于我們來說,操作數(shù)據(jù)庫都是在JDBC API【接口】上,使用不同的數(shù)據(jù)庫,只要用數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫驅(qū)動程序即可

這大大簡化了我們的學(xué)習(xí)成本

3.簡單操作JDBC

步驟:

導(dǎo)入MySQL或者Oracle驅(qū)動包

裝載數(shù)據(jù)庫驅(qū)動程序

獲取到與數(shù)據(jù)庫連接

獲取可以執(zhí)行SQL語句的對象

執(zhí)行SQL語句

關(guān)閉連接

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try {

            /*
            * 加載驅(qū)動有兩種方式
            *
            * 1:會導(dǎo)致驅(qū)動會注冊兩次,過度依賴于mysql的api,脫離的mysql的開發(fā)包,程序則無法編譯
            * 2:驅(qū)動只會加載一次,不需要依賴具體的驅(qū)動,靈活性高
            *
            * 我們一般都是使用第二種方式
            * */

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

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

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

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

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

            //遍歷結(jié)果集,得到數(shù)據(jù)
            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 {

            /*
            * 關(guān)閉資源,后調(diào)用的先關(guān)閉
            *
            * 關(guān)閉之前,要判斷對象是否存在
            * */

            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();
                }

            }

        }

上面我們已經(jīng)簡單使用JDBC去查詢數(shù)據(jù)庫的數(shù)據(jù)了,接下來我們?nèi)チ私庖幌律厦娲a用到的對象

4.Connection對象

客戶端與數(shù)據(jù)庫所有的交互都是通過Connection來完成的。

常用的方法:

//創(chuàng)建向數(shù)據(jù)庫發(fā)送sql的statement對象。

createcreateStatement()

//創(chuàng)建向數(shù)據(jù)庫發(fā)送預(yù)編譯sql的PrepareSatement對象。

prepareStatement(sql) 

//創(chuàng)建執(zhí)行存儲過程的callableStatement對象

prepareCall(sql)

//設(shè)置事務(wù)自動提交

setAutoCommit(boolean autoCommit)

//提交事務(wù)

commit()

//回滾事務(wù)

rollback()

5.Statement對象

Statement對象用于向數(shù)據(jù)庫發(fā)送Sql語句,對數(shù)據(jù)庫的增刪改查都可以通過此對象發(fā)送sql語句完成。

Statement對象的常用方法:

//查詢

executeQuery(String sql)

//增刪改

executeUpdate(String sql)

//任意sql語句都可以,但是目標不明確,很少用

execute(String sql)

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

addBatch(String sql)

//向數(shù)據(jù)庫發(fā)送一批sql語句執(zhí)行

executeBatch()
6.ResultSet對象

ResultSet對象代表Sql語句的執(zhí)行結(jié)果,當Statement對象執(zhí)行executeQuery()時,會返回一個ResultSet對象

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

常用方法:

//獲取任意類型的數(shù)據(jù)

getObject(String columnName)

//獲取指定類型的數(shù)據(jù)【各種類型,查看API】

getString(String columnName)

//對結(jié)果集進行滾動查看的方法

next()

Previous()

absolute(int row)

beforeFirst()

afterLast()

7.寫一個簡單工具類

通過上面的理解,我們已經(jīng)能夠使用JDBC對數(shù)據(jù)庫的數(shù)據(jù)進行增刪改查了,我們發(fā)現(xiàn),無論增刪改查都需要連接數(shù)據(jù)庫,關(guān)閉資源,所以我們把連接數(shù)據(jù)庫,釋放資源的操作抽取到一個工具類

    /*
    * 連接數(shù)據(jù)庫的driver,url,username,password通過配置文件來配置,可以增加靈活性
    * 當我們需要切換數(shù)據(jù)庫的時候,只需要在配置文件中改以上的信息即可
    *
    * */

    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");

            //加載驅(qū)動類
            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();
            }
        }
    }

-

如果文章有錯的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號:Java3y

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/76310.html

相關(guān)文章

  • 1、JDBC 2、DBUtils

    摘要:是訪問數(shù)據(jù)庫的標準規(guī)范提供了一種基準據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。在將此值發(fā)送到數(shù)據(jù)庫時,驅(qū)動程序?qū)⑺D(zhuǎn)換成一個類型值。例如值不支持中文,如果需要使用非英文字符,將進行轉(zhuǎn)換。 01JDBC概念和數(shù)據(jù)庫驅(qū)動程序 * A: JDBC概念和數(shù)據(jù)庫驅(qū)動程序 * a: JDBC概述 * JDBC(Java Data...

    galaxy_robot 評論0 收藏0
  • Java數(shù)據(jù)庫開發(fā)-Mysql連接

    摘要:是訪問數(shù)據(jù)庫的標準規(guī)范。提供了一種基準據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。代碼如下工具類數(shù)據(jù)庫驅(qū)動注冊失敗提供獲取連接的方法獲得連接返回連接 本文為大家介紹 Java 如何使用JDBC 連接 MySQL 數(shù)據(jù)庫。 JDBC概述 JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java A...

    Ververica 評論0 收藏0
  • Java數(shù)據(jù)庫開發(fā)-Mysql連接

    摘要:是訪問數(shù)據(jù)庫的標準規(guī)范。提供了一種基準據(jù)此可以構(gòu)建更高級的工具和接口,使數(shù)據(jù)庫開發(fā)人員能夠編寫數(shù)據(jù)庫應(yīng)用程序。代碼如下工具類數(shù)據(jù)庫驅(qū)動注冊失敗提供獲取連接的方法獲得連接返回連接 本文為大家介紹 Java 如何使用JDBC 連接 MySQL 數(shù)據(jù)庫。 JDBC概述 JDBC(Java Data Base Connectivity,java數(shù)據(jù)庫連接)是一種用于執(zhí)行SQL語句的Java A...

    kun_jian 評論0 收藏0

發(fā)表評論

0條評論

MSchumi

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<