天天看點

資料庫開發及ADO.NET(36)——SqlCommand-執行增删改、查一、SqlCommand-執行增删改:二、SqlCommand-查詢單個值三、SqlCommand-查詢多行四、DataReader 的主要成員五、執行查詢

一、SqlCommand-執行增删改:

資料庫開發及ADO.NET(36)——SqlCommand-執行增删改、查一、SqlCommand-執行增删改:二、SqlCommand-查詢單個值三、SqlCommand-查詢多行四、DataReader 的主要成員五、執行查詢

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-查詢單個值

資料庫開發及ADO.NET(36)——SqlCommand-執行增删改、查一、SqlCommand-執行增删改:二、SqlCommand-查詢單個值三、SqlCommand-查詢多行四、DataReader 的主要成員五、執行查詢

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-查詢多行

資料庫開發及ADO.NET(36)——SqlCommand-執行增删改、查一、SqlCommand-執行增删改:二、SqlCommand-查詢單個值三、SqlCommand-查詢多行四、DataReader 的主要成員五、執行查詢

四、DataReader 的主要成員

資料庫開發及ADO.NET(36)——SqlCommand-執行增删改、查一、SqlCommand-執行增删改:二、SqlCommand-查詢單個值三、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。

資料庫開發及ADO.NET(36)——SqlCommand-執行增删改、查一、SqlCommand-執行增删改:二、SqlCommand-查詢單個值三、SqlCommand-查詢多行四、DataReader 的主要成員五、執行查詢

6、執行增删改:ExecuteNonQuery()  傳回受影響行數(int)