日期:2014-05-20  浏览次数:20829 次

C#连接数据库的这两种方法有什么不同吗??
方法1:
SqlConnection   sqlcon   =   new   SqlConnection( "server=.\\sqlexpress;database=db;AttachDbFilename=C:\\db.mdf;Trusted_Connection=Yes ");
sqlcon.Open();
SqlDataAdapter   sqlda   =   new   SqlDataAdapter( "select   *   from   tb ",sqlcon);
sqlda.Fill(ds, "pp ");
dataGridView1.DataSource=ds.Tables[0];

方法2:
SqlConnection   sqlcon   =   new   SqlConnection( "server=.\\sqlexpress;database=db;AttachDbFilename=C:\\db.mdf;Trusted_Connection=Yes ");
sqlcon.Open();
SqlCommand   sqlcmd   =   new   SqlCommand( "select   *   from   tb ",sqlcon);
DataReader   Rd;
Rd   =   cmd.ExecuteReader();  
for(int   i;i <=Rd.Legth();i++)
{                  
      dataGridView1.DataSource=Rd.GetString(i);
}

               


------解决方案--------------------
第一个是一次把所有数据取出来,取出来之后就成为离线数据.
第二个是利用Reader,读一次取一次.
相对来说,Reader是只读的,所以速度很快, DataSet比较方便但是速度慢一点.
------解决方案--------------------
dataset 内存中的数据库
Reader 只读向后的记录集
------解决方案--------------------
DataSet将数据库中的内容保存到内存中,因此DataSet又被称为内存中的数据库。
------解决方案--------------------
使用DataReader的时候需要关闭数据库的连接,否则后果不堪设想!

初学者建议用DataSet

要是代码的功夫厉害的,那个用的好用那个!

------解决方案--------------------
当然不一样了 一个把数据通过Fill加载到内存里了一份儿
一个只是通过数据库把数据取出来了
我感觉 要是频繁查询数据库,还是用Fill把数据库加载到内存是最好的
要只是简单提交一个结果或者察看一下
反正都要和数据库建立连接,我看就没有必要再占用内存了
------解决方案--------------------
DataAdapter + DataSet 是离线内存数据集
优点:快!可更改,可定位,支持多个表,支持关系和约束,支持 View,支持过滤器等
缺点:占用内存较大,存在和数据库的同步问题
适用范围:具有关系的多个表的操作,少量纪录的更改操作等,如新闻编辑,订单修改等

DataReader 是只进只读的数据集
优点:非常快!占用资源极小
缺点:只读,不支持游标,每次操作都需要打开及关闭数据库连接
适用范围:一次性读取大量不必更改的纪录,如新闻列表,产品目录等。大多数用于显示目的的纪录读取都应该用 DataReader