2 使用資料庫連線

2021-10-07 14:43:44 字數 3691 閱讀 2518

為了訪問資料庫,需要提供某種連線引數,如執行資料庫的計算機和登入證書。使用sqlconnection類連線sql server。

下面的**段說明了如何建立、開啟和關閉books資料庫的連線。

public static void openconnection()

catch (exception ex)

}

注意:

sqlconnection類實現了idisposable介面,其中包含dispose方法和close方法。這兩個方法的功能相同,都是釋放連線。這樣,就可以使用using語句來關閉連線。

在該示例的連線字串中,使用的引數如下所示。連線字串中的引數用分號分隔開。

注意:在上可以找到許多不同資料庫的連線字串資訊。

這個connectionsamples示例使用定義好的連線字串開啟資料庫連線,再關閉該連線。一旦開啟連線後,就可以對資料來源執行命令,完成後,就可以關閉連線。

1. 管理連線字串

不在c#**中硬編碼連線字串,而是最好從配置檔案中讀取它。在.net core中,配置檔案可以是json或xml格式,或從環境變數中讀取。在下面的示例中,連線字串從乙個json配置檔案中讀取:

//}"data":

}}

使用nuget包microsoft.extensions.configuration定義的configuration api可以讀取json檔案。為了使用json配置檔案,還要新增nuget包microsoft.extensions.configuration.json。為了讀取配置檔案,建立configurationbuilder。addjsonfile擴充套件方法新增json檔案config.json,從這個檔案中讀取配置資訊——假定它與程式在相同的路徑中。要配置另一條路徑,可以呼叫setbasepath方法。呼叫configurationbuilder的build方法,從所有新增的配置檔案中構建配置,返回乙個實現了iconfiguration介面的物件。這樣,就可以檢索配置值,如data:defaultconnection:connectionstring的配置值:

public static void connectionusingconfig()

輸出結果:

server=localhost;database=books;trusted_connection=true;
2. 連線池

幾年前實現兩層應用程式時,是在應用程式啟動時開啟連線,只有在關閉應用程式時才關閉連線。現在就不用這麼做。使用這個程式架構的原因是,需要一定的時間來開啟連線。現在,關閉連線不會關閉與伺服器的連線。相反,連線會新增到連線池中。再次開啟連線時,它可以從池中提取,因此開啟連線會非常快速,只有第一次開啟連線需要一定的時間。

連線池可以用幾個選項在連線字串中配置。選項pooling設定為false,會禁用連線池;它預設為啟用:pooling=true。main pool size和max pool size允許配置池中的連線數。預設情況下,min pool size的值為0,max pool size的值為100。connection lifetime定義了連線在釋放前在池中保持不活躍狀態的時間。

3. 連線資訊

在建立連線後,可以註冊事件處理程式,來獲得一些連線資訊。sqlconnection類定義了infomessage和statechange事件。每次從sql server返回乙個資訊或警告訊息時,就觸發infomessage事件。連線的狀態變化時,就觸發statechange事件,。例如開啟或關閉連線:

public static void connectioninformation()

");};

connection.statechange += (sender,e) =>

,before: ");

};try

catch (exception ex)

}}

執行應用程式時,會觸發statechange事件,看到open和closed狀態:

current state: open,before: closed

connection opened

current state: closed,before: open

如果出現了異常,預設不觸發infomessage事件。設定fireinfomessageeventonusererrors屬性,可以改變這個行為。這樣在出錯時,例如使用了titl而不是title,就可以從應用程式中看到這個資訊:

current state: open,before: closed

connection opened

warning or info: invalid column name 'titl'.

current state: closed,before: open

sqlconnection類還提供了統計資訊。只需要設定statisticsenabled屬性,就可以在retrievestatistics方法中檢索統計資訊。這個方法通過實現了idictionary介面的物件返回統計資訊:

idictionary statistics = connection.retrievestatistics();

showstatistics(statistics);

connection.resetstatistics();

showstatistics方法迭代接收了idictionary介面的所有鍵,並顯示所有值:

private static void showstatistics(idictionary statistics)

,value: ");

}console.writeline();

}

從books表中檢索所有記錄,就會顯示連線中的這些統計資訊:

current state: open,before: closed

connection opened

statistics

buffersreceived,value: 0

bufferssent,value: 0

bytesreceived,value: 0

bytessent,value: 0

cursoropens,value: 0

iducount,value: 0

idurows,value: 0

preparedexecs,value: 0

prepares,value: 0

selectcount,value: 0

selectrows,value: 0

serverroundtrips,value: 0

sumresultsets,value: 0

transactions,value: 0

unpreparedexecs,value: 0

connectiontime,value: 0

executiontime,value: 162

networkservertime,value: 0

current state: closed,before: open

2 資料庫連線

1.註冊驅動 class.forname com.mysql.cj.jdbc.driver 對於我的電腦為mysql8.0版本的2.建立連線 connection connection null string url jdbc mysql localhost 3306 grade user root...

使用JDBC連線mysql,db2等資料庫

jdbc連線資料庫的方法 1 連線oracle 8 8i 9i 10g 11g thin模式 class.forname oracle.jdbc.driver.oracledriver newinstance string url jdbc oracle thin localhost 1521 or...

資料庫連線

第一,設定允許遠端連線,允許sql server驗證 第二,建立登陸帳戶並授權 第三,註冊sql server資料庫 c windows microsoft.net framework v2.0.50727 下執行 aspnet regsql 指令 data server sqlexpress in...