ExecuteReader() 方法html
解釋1:將SQL語句發送到指定鏈接 生成一個SqlDataReader對象
解釋2:當ExecuteReader()執行後返回一個SqlDataReader對象
兩種解釋實際上都在說明些方法就是給SqlDataReader對象一個能夠訪問查詢到的結果的渠道。sql
程序執行分析
1、首先須要new一個SqlDataReader對象。接收ExecuteReader()執行後返回的SqlDataReader對象。
2、SqlDataReader的HasRows屬性能夠判斷SqlDataReader中是否有(一行或多行)數據,返回bool值,有數據時爲true,程序向下執行,開始進入讀取數據環節。
3、SqlDataReader的Read方法能夠使SqlDataReader前進到下一條記錄,一樣返回bool值,當下一條無記錄返回false,則表示記錄讀取完畢;當下一條有數據時爲true,將讀取到的數據(當前的一條記錄)暫存在SqlDataReader中。
四、SqlDataReader的一系列get方法能夠獲取SqlDataReader中不一樣類型的值,保存到指定的變量中。
注:get方法參數爲列數,即第幾列。ui
還有一點很重要,DataReader必須保證SqlConnection處於鏈接狀態。server
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.htmlhtm