DataCommand和DataAdapter

Posted 腾冲园地

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataCommand和DataAdapter相关的知识,希望对你有一定的参考价值。

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 [email protected]";
 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  

 

以上是关于DataCommand和DataAdapter的主要内容,如果未能解决你的问题,请参考以下文章

启动后如何停止执行dataAdapter.update

向 dataAdapter.fill() 添加参数

DataAdapter Update 方法批量更新多行

为啥 DataAdapter.Update 啥也不更新?

如何提高 dataadapter.fill 的性能?

使用 C# dataAdapter.Fill() 和 dataAdapter.Update() 将表的数据从一个数据库传输到另一个数据库的同一个表