您好,歡迎來(lái)到賦能網(wǎng)!

java數(shù)據(jù)庫(kù)增刪改查語(yǔ)句是不是有規(guī)律?實(shí)例講解

賦能網(wǎng) 2023-05-09 57

數(shù)據(jù)庫(kù)是長(zhǎng)期保存在計(jì)算機(jī)的存儲(chǔ)設(shè)備上,按照一定規(guī)則組織起來(lái),可以被各種用戶或應(yīng)用共享的數(shù)據(jù)集合。那java數(shù)據(jù)庫(kù)增刪改查語(yǔ)句是不是有規(guī)律?下面來(lái)我們就來(lái)給大家講解一下。

使用JAVA程序封裝數(shù)據(jù)庫(kù)的增刪改,查語(yǔ)句,使用jdbc操作數(shù)據(jù)庫(kù)時(shí),需要書寫sql語(yǔ)句,而且當(dāng)操作的需求更改時(shí),這個(gè)方法就不能使用了,但其中的大部分實(shí)現(xiàn)代碼都是相同,所以我們自己封裝一個(gè)方法,用來(lái)對(duì)所有的增刪改操作都有效的方法

實(shí)現(xiàn)封裝功能使用到了可變參數(shù)。

封裝增刪改語(yǔ)句的代碼如下:

//創(chuàng)建連接對(duì)象
private Conn conn = new Conn();
//封裝增刪改語(yǔ)句
public int operationSql(String sql, Object...objects)
{
    //獲取連接
    Connection connection = conn.getConnection();
    PreparedStatement preparedStatement = null;
    //定義統(tǒng)計(jì)變量
    int count = 0;
    try
    {
        preparedStatement = connection.prepareStatement(sql);
        //通過(guò)for循環(huán)設(shè)置sql語(yǔ)句中每個(gè)占位符的值
        for (int i = 0; i < objects.length; i++)
        {
            preparedStatement.setObject(i + 1, objects[i]);
        }
        count = preparedStatement.executeUpdate();
    }
    catch (SQLException e)
    {
        e.printStackTrace();
    }
    finally
    {
        closeSql(connection, preparedStatement, null);
    }
    return count;
}

在進(jìn)行數(shù)據(jù)庫(kù)操作之間必須要先獲取到一個(gè)數(shù)據(jù)庫(kù)連接。

這里解釋一下prepareStatement和它的父類Statement的使用和區(qū)別:

1,PreparedStatement是預(yù)編譯的,對(duì)于批量處理可以大大提高效率. 也叫JDBC存儲(chǔ)過(guò)程

2,statement每次執(zhí)行sql語(yǔ)句,相關(guān)數(shù)據(jù)庫(kù)都要執(zhí)行sql語(yǔ)句的編譯,preparedstatement是預(yù)編譯得, preparedstatement支持批處理的

3,使用 Statement 對(duì)象。在對(duì)數(shù)據(jù)庫(kù)只執(zhí)行一次性存取的時(shí)侯,用 Statement 對(duì)象進(jìn)行處理。PreparedStatement 對(duì)象的開(kāi)銷比Statement大

4,因?yàn)閜repareStatement是預(yù)編譯的,所以它還可以預(yù)防SQL注入

executeUpdate()這個(gè)方法就是執(zhí)行數(shù)據(jù)庫(kù)增,刪,改 操作的,會(huì)返回一個(gè)int值該值代表的指示受影響的行數(shù)(即更新計(jì)數(shù))。

封裝查詢語(yǔ)句的代碼如下:

public void selectSql(String sql, Object...objects)
{
    //獲取連接
    Connection connection = conn.getConnection();
    PreparedStatement preparedStatement = null;
    ResultSet resultSet = null;
    try
    {
        preparedStatement = connection.prepareStatement(sql);
        //通過(guò)for循環(huán)設(shè)置sql語(yǔ)句中每個(gè)占位符的值
        for (int i = 0; i < objects.length; i++)
        {
            preparedStatement.setObject(i + 1, objects[i]);
        }
        resultSet = preparedStatement.executeQuery();
        while (resultSet.next())
        {
            System.out.println(resultSet.getInt(1) + "\t" + resultSet.getString(2) + "\t" + resultSet.getInt(3));
        }
    }
    catch (SQLException e)
    {
        e.printStackTrace();
    }
    finally
    {
        closeSql(connection, preparedStatement, resultSet);
    }
}

同樣,操作前必須要獲取一個(gè)數(shù)據(jù)庫(kù)連接

executeQuery()這個(gè)方法就是執(zhí)行數(shù)據(jù)庫(kù)查詢操作的,并且它還會(huì)返回一個(gè)resultSet結(jié)果集。通過(guò)遍歷獲取集合中的數(shù)據(jù)

大家注意到在每個(gè)try … catch 后面都有finally

因?yàn)槲覀冊(cè)谑褂媒Y(jié)束后需要關(guān)閉資源,使用數(shù)據(jù)庫(kù)連接池的話,可以不用考慮關(guān)閉連接的占用資源的問(wèn)題。這里只是講述一下關(guān)閉資源的額方法和流程。

現(xiàn)在我們將它封裝成一個(gè)方法,方法代碼如下:

public void closeSql(Connection connection, PreparedStatement preparedStatement, ResultSet resultSet)
{
    if (connection != null)
    {
        try
        {
            connection.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
    if (preparedStatement != null)
    {
        try
        {
            preparedStatement.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
    if (resultSet != null)
    {
        try
        {
            resultSet.close();
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
    System.out.println("關(guān)閉成功!!");
}

當(dāng)資源對(duì)象不為空時(shí),調(diào)用它的close()方法關(guān)閉資源。

java數(shù)據(jù)庫(kù)增刪改查語(yǔ)句肯定是有一定規(guī)律性的,只要大家掌握好技巧,進(jìn)行java數(shù)據(jù)庫(kù)增刪改查語(yǔ)還是很容易的。最后大家如果想要了解更多初識(shí)java知識(shí),敬請(qǐng)關(guān)注賦能網(wǎng)。


本文鏈接:

本文章“java數(shù)據(jù)庫(kù)增刪改查語(yǔ)句是不是有規(guī)律?實(shí)例講解”已幫助 57 人

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開(kāi)班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579

如果本頁(yè)不是您要找的課程,您也可以百度查找一下: