一、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
微信掃一掃
支付寶掃一掃