SqlDataReader 高效,功能弱,只讀訪問
SqlDataAdapter 強大,要求資源也大一點
SqlDataReader 只能在保持跟數據庫連接的狀態下才可以讀取。。。
SqlDataAdapter 大多情況下是一次性讀取一個表,然后填充到DataSet中,然后就可以斷開跟數據庫的連接了。
因為DataSet是離線的,所以SqlDataAdapter這個對象是連接DataSet和數據庫的橋梁,所有對DataSet的操作(填充,更新等)都要通過他
ado.net數據訪問有兩種方式:
1.離線--通過DataSet,然后離線增,刪,改,最后通過SqlDataAdapter解 析到數據庫中
2.直接對數據庫操作SqlCommand (Update,Insert,Delete)
SqlCommand就是是命令了,可以用它來執行SQL命令
SqlDataAdapter就是數據適配器了,它是用於在數據源和數據集之間通訊的一組對象
SqlCommand對應DateReader
SqlDataAdapter對應DataSet
一、DataCommand
1 string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 2 SqlConnection sqlconn = new SqlConnection(sqlconnstr); 3 //建立Command對象 4 SqlCommand sqlcommand = new SqlCommand(); 5 //Command對象的屬性賦值 6 sqlcommand.Connection = sqlconn; 7 sqlcommand.CommandText = "delete from Employees where ID=@ID"; 8 sqlcommand.Parameters.AddWithValue("@ID", TextBox1.Text); 9 //打開數據庫連接 10 sqlconn.Open(); 11 12 //執行數據庫操作 13 intDeleteCount = sqlcommand.ExecuteNonQuery(); 14 15 刪除對象、關閉連接 16 17 sqlcommand = null; 18 sqlconn.Close(); 19 sqlconn = null;
1 SqlCommand myconn = new SqlCommand("select * from v_economy2_comidd where eid=" + Request.QueryString["eid"] + "", conn); 2 3 conn.Open(); 4 5 SqlDataReader rd = myconn.ExecuteReader(); 6 7 rd.Read(); 8 9 Lbyear1.Text = rd["year1"].ToString(); 10 11 Lbmonth1.Text = rd["month1"].ToString(); 12 13 Lbcom_name.Text = rd["com_name"].ToString(); 14 15 rd.Close(); 16 17 conn.Close();
二、DataAdapter
1 string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; ; 2 SqlConnection sqlconn = new SqlConnection(sqlconnstr); 3 DataSet ds = new DataSet(); 4 sqlconn.Open(); 5 SqlDataAdapter sqld = new SqlDataAdapter("select * from student", sqlconn); 6 sqld.Fill(ds, "tabstudent"); 7 8 GridView1.DataSource = ds.Tables["tabstudent"].DefaultView; 9 GridView1.DataBind(); 10 sqlconn.Close(); 11 sqlconn = null;
1 string sqlconnstr = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 2 SqlConnection sqlconn = new SqlConnection(sqlconnstr); 3 //建立DataSet對象 4 DataSet ds = new DataSet(); 5 //建立DataTable對象 6 DataTable dtable; 7 //建立DataRowCollection對象 8 DataRowCollection coldrow; 9 //建立DataRow對象 10 DataRow drow; 11 //打開連接 12 sqlconn.Open(); 13 //建立DataAdapter對象 14 SqlDataAdapter sqld = new SqlDataAdapter("select * from Employees", sqlconn); 15 //用Fill方法返回的數據,填充DataSet,數據表取名為“tabstudent” 16 sqld.Fill(ds, "Employees"); 17 //將數據表tabstudent的數據復制到DataTable對象 18 dtable = ds.Tables["Employees"]; 19 //用DataRowCollection對象獲取這個數據表的所有數據行 20 coldrow = dtable.Rows; 21 //逐行遍歷,取出各行的數據 22 for (int inti = 0; inti < coldrow.Count; inti++) 23 { 24 drow = coldrow[inti]; 25 Label1.Text += " 編號:" + drow[0]; 26 Label1.Text += " 姓名:" + drow[1]; 27 Label1.Text += " 性別:" + drow[2]; 28 Label1.Text += " 年齡:" + drow[3]; 29 Label1.Text += " 工作日期:" + drow[4] + "<br />"; 30 } 31 //執行更新 32 sqld.Update(dtable.GetChanges()); 33 //使DataTable保存更新 34 DataTable.AcceptChanges(); 35 sqlconn.Close(); 36 sqlconn = null; 37