一、SqlCommand介紹
SqlCommand是C#中操作SQL Server的重要類之一,它用於對關係型數據庫進行操作,具體包括插入、更新、刪除等操作。SqlCommand類負責執行針對數據源的命令文本,並返回受影響的行數。
SqlCommand類是System.Data.SqlClient命名空間中的一個類,通過SqlDataAdapter和SqlTransaction類可以使用SqlCommand類來獲取數據並進行事務控制。
using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); command.Connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine("\t{0}\t{1}\t{2}", reader[0], reader[1], reader[2]); } reader.Close(); }
二、SqlDataReader介紹
SqlDataReader是C#中讀取SQL Server數據庫數據的重要工具,它提供了一種基於只讀、正向、前進方式的數據訪問方法,它的結果集類似於一個只能向前讀取的只讀流。
SqlDataReader對象是通過SqlCommand對象執行ExecuteReader方法來創建的,ExecuteReader方法將根據查詢字符串執行SqlCommand對象實例中包含的SQL語句,並返回一個SqlDataReader對象,通過SqlDataReader對象即可讀取SQL語句執行後的結果集。
using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand(queryString, connection); command.Connection.Open(); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine(String.Format("{0} \t | {1}", reader[0], reader[1])); } reader.Close(); }
三、SqlDataReader的使用
1、讀取單個字段
使用SqlDataReader讀取數據庫時,可以使用reader.GetName(int i)方法獲取列名,reader.GetValue(int i)方法獲取該列的值。
SqlCommand command = new SqlCommand("SELECT UserName FROM Users", connection); SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { string name = reader.GetValue(0).ToString(); Console.WriteLine(name); }
2、讀取多個字段
使用SqlDataReader讀取多個字段時,可以使用reader.GetOrdinal(string ColumnName)方法獲取列的編號。
SqlCommand command = new SqlCommand("SELECT UserName, UserAge FROM Users", connection); SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { string name = reader.GetString(reader.GetOrdinal("UserName")); int age = reader.GetInt32(reader.GetOrdinal("UserAge")); Console.WriteLine(name + " : " + age); }
3、讀取Blob類型數據
如果讀取Blob類型數據,可以在SqlDataReader對象中使用GetSqlBinary方法。
SqlCommand command = new SqlCommand("SELECT Image FROM Pictures", connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { byte[] imageBytes = reader.GetSqlBinary(0).Value; File.WriteAllBytes("C:\\temp\\picture.jpg", imageBytes); }
4、讀取日期時間型數據
如果讀取日期時間型數據,可以在SqlDataReader對象中使用GetDateTime方法。
SqlCommand command = new SqlCommand("SELECT PostDate FROM News", conn); SqlDataReader reader = command.ExecuteReader(); while(reader.Read()) { dateTime postDate = reader.GetDateTime(0); Console.WriteLine(postDate.ToString()); }
5、讀取空值
如果讀取一個null值,可以使用IsDBNull方法來判斷,如果為true就是null,否則即為有效值。
SqlCommand command = new SqlCommand("SELECT UserName FROM Users WHERE ID=1234", connection); SqlDataReader reader = command.ExecuteReader(); if(reader.Read()) { if(reader.IsDBNull(0)) { Console.WriteLine("該值為null"); } else { Console.WriteLine(reader.GetString(0)); } }
四、總結
SqlCommand和SqlDataReader是C#中和SQL Server進行數據交互的主要工具,它們可用於執行命令、查詢數據、事務處理等操作,並且可以支持各種數據類型和數據格式。通過對SqlCommand和SqlDataReader的深入了解和靈活應用,可以實現高效地操作數據庫。
原創文章,作者:EBSLH,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/369296.html