ExecuteReader() 方法
解釋1:將SQL語句發送到指定連接 生成一個SqlDataReader對象
解釋2:當ExecuteReader()執行后返回一個SqlDataReader對象
兩種解釋實際上都在說明些方法就是給SqlDataReader對象一個可以訪問查詢到的結果的渠道。
程序執行分析
1、首先需要new一個SqlDataReader對象。接收ExecuteReader()執行后返回的SqlDataReader對象。
2、SqlDataReader的HasRows屬性可以判斷SqlDataReader中是否有(一行或多行)數據,返回bool值,有數據時為true,程序向下執行,開始進入讀取數據環節。
3、SqlDataReader的Read方法可以使SqlDataReader前進到下一條記錄,同樣返回bool值,當下一條無記錄返回false,則表示記錄讀取完畢;當下一條有數據時為true,將讀取到的數據(當前的一條記錄)暫存在SqlDataReader中。
4、SqlDataReader的一系列get方法可以獲取SqlDataReader中不同類型的值,保存到指定的變量中。
注:get方法參數為列數,即第幾列。
還有一點很重要,DataReader必須保證SqlConnection處於連接狀態。
class Program { static void Main(string[] args) { string constr = @"server=.\SQLEXPRESS;database=MyDataBase;uid=sa;pwd=sa"; //string constr = @"server=.\SQLEXPRESS;database=MyDataBase;Integrated Security=True"; using (SqlConnection sqlconn = new SqlConnection(constr)) { string cmdstr = @"select * from Student"; using (SqlCommand cmd = new SqlCommand(cmdstr, sqlconn)) { if (sqlconn.State == ConnectionState.Closed) { sqlconn.Open(); } SqlDataReader reader= cmd.ExecuteReader(); if (reader.HasRows)//HasRows判斷reader中是否有數據 { while(reader.Read()) //Read()方法讀取下一條記錄,如果沒有下一條,返回false,則表示讀取完成 { int id = reader.GetInt32(0); string name = reader.GetString(1); string gender = reader.GetBoolean(3) == true ? "男" : "女"; //運用了三元表達式 int age = reader.GetInt32(2); Console.WriteLine("\t{0}\t{1}\t{2}\t{3}\r\n",id,name,gender,age); } Console.ReadKey(); } } } } }
並非本人所寫,轉載出自原文作者“新起點”,原文鏈接:http://www.cnblogs.com/net515/archive/2012/06/14/2549267.html