SqlDataReader和SqlDataAdapter+DataSet 区别

来源:互联网 发布:康泰尔a1丝绕线数据 编辑:程序博客网 时间:2024/05/15 12:42

SqlDataReaderSqlDataAdapter+DataSet 区别

http://space.itpub.net/26481450/viewspace-735928

一,SqlDataReader //基于连接,只读访问适合数据量较小。

SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库。要求资源也大一点

 

二,SqlDataAdapter读取数据后将数据集放入DataSetDataSet 的数据存在本地客服机内存。

 

三,SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到。

SqlDataAdapter返回的是数据集或者表,可以对其中的数据作任意操作

 

四,写法上不同:

SqlDatReader执行前须先打开数据库,然后须生成一个COMMAND对象。再由COMMAND.EXECUTEREADER()方法赋值。完成后须手动关闭联接。

SqlCommand cmd = new SqlCommand("select * from stu", conn);

conn.Open();

SqlDataReader rdr = cmd.ExecuteReader();

。。。。。

conn.close();

SqlDataAdapter执行时,自动打数据库,且不用CommandExecuteReader方法进行赋值,完成后自动断开联接。

SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);

DataSet ds = new DataSet();

adptr.Fill(ds, "stu");

 

实例:

1,运用SqlDataReader读取数据

class DataReader

{

static void Main()

{

string str = "server=localhost;uid=sa;pwd=123;database=northwind";

SqlConnection conn = new SqlConnection(str);

SqlCommand cmd = new SqlCommand("select * from stu", conn);

conn.Open();

SqlDataReader rdr = cmd.ExecuteReader();

DataTabletable=new Datable();

table.Load(rdr);

rdr.Close();

conn.Close();

}

 

 

2,运用SqlDataAdapter +DataSet读取修改数据

class SqlDataAdapter

{

static void Main()

{

string str ="server=localhost;uid=sa;pwd=123;database=northwind";

SqlConnection conn = new SqlConnection(str);

string sql = "select * from stu";

SqlDataAdapter adptr = new SqlDataAdapter(sql, conn);//Adepter对象

DataSet ds = new DataSet();//DataSet对象

adptr.Fill(ds, "stu");//填充DataSet并为当前表命名

DataTableReader rdr = ds.CreateDataReader();

while (rdr.Read())//读取表中数据

{

for (int i = 0; i < rdr.FieldCount; i++)

{

Console.Write(rdr.GetName(i) + "\t" + rdr.GetValue(i) +"\t");

}

Console.WriteLine();

}

}

原创粉丝点击