Ado.net中DataSet和SqlDataReader的区别
来源:互联网 发布:唱歌声卡软件下载 编辑:程序博客网 时间:2024/06/07 04:06
概述:
一,SqlDataReader //基于连接,只读访问 适合数据量较小。
SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库。要求资源也大一点
二,SqlDataAdapter 读取数据后将数据集放入DataSet ,DataSet 的数据存在本地客服机内存。
三,SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到。
SqlDataAdapter返回的是数据集或者表,可以对其中的数据作任意操作
四,写法上不同:
SqlDatReader执行前须先打开数据库,然后须生成一个COMMAND对象。再由COMMAND.EXECUTEREADER()方法赋值。完成后须手动关闭联接。
SqlCommand cmd = new SqlCommand("select * from stu", conn);
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
。。。。。
conn.close();
SqlDataAdapter 执行时,自动打数据库,且不用Command的ExecuteReader方法进行赋值,完成后自动断开联接。
SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
adptr.Fill(ds, "stu");
using (SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=MyTest;User ID=sa;Password=123456")) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { // 输入 1' or '1'='1 会造成SQL注入漏洞 // cmd.CommandText = "select age from T_STudent where Name='"+txtName.Text+"'"; cmd.CommandText = "select age from T_Student where Name=@Name or Age>@aaa"; cmd.Parameters.Add(new SqlParameter("@Name", txtName.Text)); cmd.Parameters.Add(new SqlParameter("@aaa" , Convert.ToInt32(txtAGe.Text))); //insert into .... values(@Name,@Age) //delete .... where Id=@HahahId //update t1 set Age=@myage //@参数不能用来替换表名、字段名、select之类的关键字等 //cmd.CommandText = "select age from @TableName"; //cmd.Parameters.Add(new SqlParameter("@TableName", "T_Student")); //cmd.Parameters.Add(new SqlParameter("@Name", txtName));//初学者不要写错成这样 using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { //GetInt32获得的是int类型 //GetInt64获得的是long类型(数据库中是bigint) int age = reader.GetInt32(0); MessageBox.Show(age.ToString()); } } } }
using (SqlConnection conn = new SqlConnection("Data Source=.; Initial Catalog=MyTest;User ID=sa;Password=123456")) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) <span style="white-space:pre"></span> { cmd.CommandText = "select * from T_Student where Age<@aaa"; cmd.Parameters.Add(new SqlParameter("@aaa", 60)); //cmd.ExecuteReader( //SqlDataAdapter是一个帮我们把SqlCommand查询结果填充到DataSet //中的类 SqlDataAdapter adapter = new SqlDataAdapter(cmd); //DataSet相当于本地的一个复杂集合(List<int>) DataSet dataset = new DataSet(); adapter.Fill(dataset);//执行cmd并且把SqlCommand查询结果填充到DataSet DataTable table = dataset.Tables[0]; DataRowCollection rows = table.Rows; for (int i = 0; i < rows.Count; i++) { DataRow row = rows[i]; int age = (int)row["Age"]; string name = (string)row["Name"]; MessageBox.Show(name + "," + age); } }
- Ado.net中DataSet和SqlDataReader的区别
- C#中DataSet和SqlDataReader的区别
- ado.net中SqlDataReader
- SqlDataReader和SqlDataAdapter+DataSet 区别
- ADO.NET数据库操作------SqlDataReader和SqlDataAdapter 区别
- .net 中 dataset和datareader的区别
- ADO.NET中DataSet的使用
- SqlDataReader 与SqlDataAdapter+DataSet 的区别
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- ADO.NET的DataSet和ADO的Recordset的比较
- spring的分散配置
- Map日常--Map的复制,Map不可修改UnsupportedOperationException
- 七步从Angular.JS菜鸟到专家(2):Scopes(1)
- 觉得有点自豪的一些项目
- 七步从Angular.JS菜鸟到专家(3):数据绑定和AJAX(1)
- Ado.net中DataSet和SqlDataReader的区别
- EL与OGNL的对比使用
- UVaOJ-11624-Fire! 解题报告
- ??html阻止事件冒泡
- PAT_B_字符串-06. IP地址转换(20)
- 七步从AngularJS菜鸟到专家(4和5):指令和表达式(1)
- 七步从AngularJS菜鸟到专家(6):服务(1)
- poj1815+sap+枚举+最小割点集
- 理解互斥量和信号量 .