一、SqlCommand-執行增删改:
SqlCommand表示向伺服器送出的一個指令(SQL語句等) , CommandText屬性為要執行的SQL語句,ExecuteNonQuery方法執行一個非查詢語句(Update、Insert、Delete等)。ExecuteNonQuery傳回值是執行的影響行數。
1、執行簡單的Insert語句:
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Insert into T_Users(UserName,Password) values('admin','888888')";
cmd.ExecuteNonQuery();
}
二、SqlCommand-查詢單個值
2、ExecuteScalar:SqlCommand的ExecuteScalar方法用于執行查詢,并傳回查詢所傳回的結果集中第一行的第一列,因為不能确定傳回值的類型,是以傳回值是object類型。
cmd.CommandText = "select count(*) from T_Users";
int i = Convert.ToInt32(cmd.ExecuteScalar())
cmd.CommandText = "select getdate()";
DateTime dt = Convert.ToDateTime(cmd.ExecuteScalar());
3、得到自動增長字段的主鍵值,用@@identity(目前工作階段任何資料表中所産生的最後一個識别值 ),用ExecuteScalar執行最友善。
cmd.CommandText = “Insert into T_Users(UserName,Password)values(‘admin’,‘888888’);select @@identity;";
int i = Convert.ToInt32(cmd.ExecuteScalar());
三、SqlCommand-查詢多行
四、DataReader 的主要成員
五、執行查詢
4、執行有多行結果集的用ExecuteReader。read方法,如果讀到下一行資料,則傳回true,而且reader本身就等于那一行資料。這個reader是一個變量,一般寫為dr。這是一個所引器。
SqlDataReader reader = cmd.ExecuteReader();
...
while (reader.Read()) //read方法,如果讀到下一行資料,則傳回true,而且reader本身就等于那一行資料。這個reader是一個變量,一般寫為dr。這是一個所引器。
{
Console.WriteLine(reader.GetString(1));
}
如:
cmd.CommandText = "select * from T_Users";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader.GetString(1));
}
}
說明:reader的GetString、GetInt32等方法隻接受整數參數,也就是序号,用GetOrdinal方法根據列名動态得到序号。
5、為什麼用using。Close:關閉以後還能打開。Dispose:直接銷毀,不能再次使用。using在出了作用域以後調用Dispose,SqlConnection、FileStream等的Dispose内部都會做這樣的判斷:判斷有沒有close,如果沒有Close就先Close再Dispose。
6、執行增删改:ExecuteNonQuery() 傳回受影響行數(int)