C#之執行SQL語句:Command物件
在使用ADO.NET中的連線資料庫:Connection物件連線上資料庫之後,我們下面所做的就是對資料庫中的資料進行操作。在ADO.NET中,是通過執行SQL語句:Command物件來對資料進行操作
下面的所有的例子均使用下面的資料庫:
Command物件概述
Command物件最主要的工作是通過Connection物件對資料來源下達操作資料庫的命令。Command物件有許多屬性,但是常用的屬性為:
屬性 |
說明 |
ActiveConnection | 設定要透過哪個連線物件下命令 |
CommandBehavior | 設定Command物件的動作模式 |
CommandType(Text\TableDirect\StoredProcedure) | 命令型別(SQL語句,完整表達句,儲存過程) |
CommandText | 要下達至資料來源的命令 |
CommandTimeout | 出錯時等待時間 |
Parameters | 引數集合 |
RccordsAffected | 受影響的記錄數 |
例一,建立一個SqlCommand物件comText,並設定出錯時等待時間為2秒。完整的程式碼為:
<span style="font-size:18px;">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient;//引入名稱空間 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string conStr = "server=.;user=sa;pwd=123456;database=CustomerManagement";//連線字串 SqlConnection conText = new SqlConnection(conStr);//建立Connection物件 try { conText.Open();//開啟資料庫 string sql = "select * from manager";//建立統計語句 SqlCommand comText = new SqlCommand(sql, conText);//建立Command物件 comText.CommandTimeout = 2;//設定等待時間 Console.WriteLine("建立Command成功"); } catch (Exception ex)//建立檢查Exception物件 { Console.WriteLine(ex.Message.ToString());//輸出錯誤資訊 } finally { conText.Close();//關閉連線 } Console.ReadLine(); } } } </span>
執行結果為:
執行SQL語句
定義好命令後就應當執行命令,Command物件執行命令提供了三種方法。
方法 | 返回值描述 |
ExecuteNonQuery() | 不返回任何結果 |
ExecuteReader() | 返回一個IDataReader |
ExecuteScalar() | 返回一個值 |
1,ExecuteNonQuery方法
這個方法沒有返回任何結果,所以一般用於updata,delete,insert語句中。
例二,通過ExecuteNonQuery方法更改CustomerManagement資料庫中的manager資料表中id為1的使用者的密碼。完整的程式碼為:
<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;//引入名稱空間
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string conStr = "server=.;user=sa;pwd=123456;database=CustomerManagement";//連線字串
SqlConnection conText = new SqlConnection(conStr);//建立Connection物件
try
{
conText.Open();//開啟資料庫
string sql = "update manager set userPwd=123456789 where id=1";//建立修改語句
SqlCommand comText = new SqlCommand(sql, conText);//建立Command物件
comText.ExecuteNonQuery();//執行命令
Console.WriteLine("更改成功");
}
catch (Exception ex)//建立檢查Exception物件
{
Console.WriteLine(ex.Message.ToString());//輸出錯誤資訊
}
finally
{
conText.Close();//關閉連線
}
Console.ReadLine();
}
}
}
</span>
執行時出現這樣的結果:
編譯時並沒有出現錯誤,仔細檢查後才知道是update語句拼寫錯誤,就因為一個小小的拼寫錯誤,費了半天勁才找到,把updata改成update即可,再執行的結果為:
在CustomerManagement資料庫中的manager資料表的內容已更改:
2,ExecuteScalar方法
這個方法返回一個值,一般用於只返回一個值的語句,如求資料統計的count語句,求最大數Max或最小數Min語句等。
例三,通過Command物件的ExecuteScalar方法統計CustomerManagement資料庫中的manager資料表中的所有記錄係數。完整的程式碼為:
<span style="font-size:18px;">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;//引入名稱空間
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string conStr = "server=.;user=sa;pwd=123456;database=CustomerManagement";//連線字串
SqlConnection conText = new SqlConnection(conStr);//建立Connection物件
try
{
conText.Open();//開啟資料庫
string sql = "select count(*) from manager";//建立統計語句
SqlCommand comText = new SqlCommand(sql, conText);//建立Command物件
int t = 0;
t = (int)comText.ExecuteScalar();//執行查詢並將值返回給t
Console.WriteLine("manager資料表中的記錄係數為:"+t.ToString());
}
catch (Exception ex)//建立檢查Exception物件
{
Console.WriteLine(ex.Message.ToString());//輸出錯誤資訊
}
finally
{
conText.Close();//關閉連線
}
Console.ReadLine();
}
}
}</span>
執行的結果為:
CustomerManagement資料庫中的manager資料表中的記錄係數為:
3,ExecuteReader方法
ExecuteReader方法返回一個DataReader物件,可用於迭代返回記錄,有關DataReader獨享的內容將會在《C#之讀取資料:DataReader物件》詳細介紹和應用。