ADO.NET中有關SqlConnection與Sqlcommand 的介紹與應用
思維導圖:
ADO.NET提供5個主要的類的對象來實現數據的連接訪問和離線訪問。這5個類分別是Connection、Command、DataReader、DataAdapter和DataSet。
SqlConnection 的介紹與應用
1、介紹與作用
SqlConnection是ADO.NET中的連接類。
使用sqlconnection 類可以連接到SQL Server數據庫。
2、主要屬性以及方法
主要屬性:ConnectionString(連接字符串)
其它屬性簡介:
屬性 |
說明 |
ClientConnectionId |
最近連接嘗試連接的 ID,無論該嘗試是成功還是失敗。 |
ConnectionTimeout |
獲取在嘗試建立連接時終止嘗試並生成錯誤之前所等待的時間。 (重寫 DbConnectionConnectionTimeout。) |
Credential |
獲取或設置此連接的 SqlCredential 對象。 |
獲取當前數據庫或連接打開后要使用的數據庫的名稱。 (重寫 DbConnectionDatabase。) |
|
DataSource |
獲取要連接的 SQL Server 實例的名稱。 (重寫 DbConnectionDataSource。) |
FireInfoMessageEventOnUserErrors |
獲取或設置 FireInfoMessageEventOnUserErrors 屬性。 |
PacketSize |
用來與 SQL Server 的實例進行通信的網絡數據包的大小,以字節為單位。 |
ServerVersion |
獲取包含客戶端連接的 SQL Server 實例的版本的字符串。 (重寫 DbConnectionServerVersion。) |
指示最近在連接上執行網絡操作時, SqlConnection 的狀態。 (重寫 DbConnectionState。) |
|
StatisticsEnabled |
如果設置為 true,則對當前連接啟用統計信息收集。 |
WorkstationId |
獲取標識數據庫客戶端的一個字符串。 |
方法:Open();(打開數據庫) Close();(關閉數據庫)
構造函數:
名稱 |
說明 |
SqlConnection |
初始化 SqlConnection 類的新實例。 |
SqlConnection(String) |
如果給定包含連接字符串的字符串,則初始化 SqlConnection 類的新實例。 |
SqlConnection(String, SqlCredential) |
初始化給定連接字符串的 SqlConnection 類的新實例,而不使用包含用戶識別號和密碼的 Integrated Security = true 和 SqlCredential 對象。 |
3、創建SqlConnection對象:
可以使用定義好的連接字符串創建SqlConnection對象。代碼如下
SqlConnection connection=new SqlConnection(connectionString);
要訪問數據源,必須先建立連接。這個連接對象里描述了數據庫服務器類型、數據庫的名字、用戶名、密碼等參數。
SqlConnection conn=new SqlConnection();
conn.ConnectionString=”Data Source=(Local);
Initial Catalog=pubs; uid=sa; pwd=sa;”
調用SqlConnection 對象的Open()與Close() 方法來打開和關閉數據庫的代碼如下:
打開數據庫:connection.Open();
關閉數據庫:connection.Close();
SqlCommand的介紹與應用
SqlCommand屬於命令類
1、作用:
SqlCommand 對象用於執行具體的SQL語句,如增加、刪除、修改、查找。
2、主要屬性以及方法
SqlCommand對象的常用屬性
屬 性 |
說 明 |
Connection屬性 |
指定Command對象所使用的Connection對象。 |
CommandType屬性 |
指定Command對象的類型,有3種選擇: 1 Text:表示Command對象用於執行SQL語句。 2 StoredProcedure:表示Command對象用於執行存儲過程。 3 TableDirect:表示Command對象用於直接處理某個表。 CommandType屬性的默認值為Text。 |
CommandText屬性 |
根據CommandType屬性的取值來決定CommandText屬性的取值,分為3種情況: 1 如果CommandType屬性取值為Text,則CommandText屬性指出SQL語句的內容。 2 如果CommandType屬性取值為StoredProcedure,則CommandText屬性指出存儲過程的名稱。 3 如果CommandType屬性取值為TableDirect,則CommandText屬性指出表的名稱。 CommandText屬性的默認值為SQL語句。 |
CommandTimeout屬性 |
指定Command對象用於執行命令的最長延遲時間,以秒為單位,如果在指定時間內仍不能開始執行命令,則返回失敗信息。 默認值為30秒。 |
Parameters屬性 |
指定一個參數集合。 |
SqlCommand對象的重要方法:
方法 |
說明 |
ExecuteScalar |
執行查詢,並返回查詢結果中的第一行第一列的值,類型是object |
ExecuteNonQuery |
執行SQL語句並返回受影響的行數 |
ExecuteReader |
執行查詢命令,返回SqlDataReader對象 |
3、SqlCommand對象的使用步驟如下
(1)創建SqlConnection對象
SqlConnection connection=new SqlConnection(connectionString);
(2)定義SQL語句
把所要執行的SQL語句賦給字符串。
(3)創建SqlCommand對象
SqlCommand command = new SqlCommand();
(4)調用SqlCommand對象的某個方法,執行SQL語句。
注意:在調用SqlCommand 對象的某個方法之前,一定要打開數據庫連接,否則程序會出錯。
舉例如下:
public partial class Form1 : Form
{
//數據庫連接字符串
private static string connString = "Data Source=localhost;Initial Catalog=QQ;Integrated Security=true";
//數據庫連接對象
public static SqlConnection connection = new SqlConnection(connString);
public Form1()
{
InitializeComponent();
}
//執行SQL語句
private void btnSql_Click(object sender, EventArgs e)
{
try
{
//查詢用的 SQL 語句
string selectSql = "select count(*) from Users";
//創建Command對象
SqlCommand command = new SqlCommand();
//指定Command對象所使用的Connection對象
command.Connection = connection;
//指定Command對象用於執行SQL語句
command.CommandType = CommandType.Text;
//指定要執行的SQL語句
command.CommandText = selectSql;
//打開數據庫連接
connection.Open();
//執行查詢操作,返回單個值
this.txtCount.Text = command.ExecuteScalar().ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//關閉數據庫連接
connection.Close();
}
}
//執行存儲過程
private void btnStoreProc_Click(object sender, EventArgs e)
{
try
{
//創建Command對象
SqlCommand command = new SqlCommand();
//指定Command對象所使用的Connection對象
command.Connection = connection;
//指定Command對象用於執行存儲過程
command.CommandType = CommandType.StoredProcedure;
//指定要執行的存儲過程的名稱
command.CommandText = "procSelect1";
//打開數據庫連接
connection.Open();
//執行查詢操作,返回單個值
this.txtCount.Text = command.ExecuteScalar().ToString();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
//關閉數據庫連接
connection.Close();
}
}
}