数据库访问ADO.NET结构图

ADO.NET的数据访问技术的架构 。ADO.NET支持SQL Server数据访问和OLE DB数据访问。两者相比,前者是针对SQL Server的数据库访问引擎,所以访问SQL Server数据库效率会高许多,但只支持SQL Server。后者是比较通用的数据库访问引擎,可以支持广泛的数据库,但效率不如前者。对开发者来说,如果不用到某种数据库的特性,其大体使用方法是一 致的。

  数据库的连接部分 ,Connetion对象。提供了与具体数据库的连接方式,具体你是用SqlConnection对象还是OleDbConnection对象。

  下面给出两段典型的数据库连接的例子。在此之前,请在程序头部using处添加using System.Data.SqlClient或System.Data.OleDb,以保证数据库访问时用到的命名空间能引用

  SQL Server数据访问

  string strConn="Integrated Security=SSPI;Initial Catalog=MyDatabase;Data Source=YY-POWERP C ";

  SqlConnection myConnection = new SqlConnection (strConn);

  myConnection.Open();

  OleDb数据访问

  String strConn="Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=MyDatabase;Integrated Security=SSPI";

  OleDbConnection myConnection=new OleDbConnection (strConn);

  myConnection.Open();

  上述步骤执行后,如果没有异常抛出,便可成功完成与数据库的连接。

      接下来来完成访问数据库的工作 .DataAdapter对象。 DataAdapter的工作是后面DataSet的基础,其内容就是建立一个DataSet与数据库的中间层,来协调访问。由于DataAdapter 与DataSet的关系十分紧密,我就结合在一起介绍了。DataAdapter也分为SqlDataAdapter和OleDbDataAdatper 两种。下面给出一段典型代码(OleDbDataAdapter的情况可类推):

  SqlDataAdapter myDataAdapter = new SqlDataAdapter ();

  DataSet myDataSet = new DataSet ();

  string strCom = "SELECT * FROM 会员信息表";

  myDataAdapter.SelectCommand = new SqlCommand (strCom,myConnection);

  SqlCommandBuilder myCB = new SqlCommandBuilder (myDataAdapter);

  myDataAdapter.Fill (myDataSet,"会员信息表");

  这段代码用到了SqlDataAdapter、DataSet、SqlCommand、SqlCommandBuilder四个对象。从上图中 可以看出,SqlDataAdapter的作用就是负责与数据库的通讯访问,同时与DataSet相连,它的内部有四个很重要的Command对象(同样 分为SqlCommand和OleDbCommand),都是访问数据库必用的,分别为SelectCommand、InsertCommand、 UpdateCommand、DeleteCommand对象。这些Command对象便是专门用来完成对数据库的查询、插入、更新、删除操作,它们就像 四个大臣,在DataAdapter的控制下分别主管各自的事情。其中SelectCommand是它们四个中的老大,由它可以自动的构造生成另外的三 个。构造生成的过程就是应用CommandBuilder。在这之前,我们只需要指定DataAdapter中的SelectCommand对象,就可以 了。

  在设置好了SQL Select语句后,就可以开始填充相应的数据集了。方法是应用DataAdapter的Fill方法,参数为DataSet及其中的某个DataTable。

DataSet对象 。如果你用过ADO中的Recordset对象,你可能会 感觉到DataSet和Recordset的差别。Recordset一般只能应用于单表,即一个Recordset对应于一张表。而DataSet中有 一个DataTableCollection,即一个DataTable集合,可以包含多个DataTable对象。DataTable对象看上去就更加 像一张表了,其中有DataRowCollection、DataColumnCollection、ConstraintCollection。它们分 别代表DataRow(数据行)、DataColumn(数据列)、Constraint(约束关系)的对象集合。可能说这么多,你已经有点儿迷糊了,先 看一句代码吧。

  myDataSet.Tables["MyTable"].Rows[3]["MyName"] = "杨扬";

  怎么样?是不是一下子就明白了许多。这是一句多么完美的OO思想表达出的语句啊!这句就是将DataSet下的一个名为MyTable的"虚 表"中的第4行的MyName字段的内容改为"杨扬"。为什么叫"虚表"呢?这是因为ADO.NET的一个特点就是脱机连接数据库。这样可以减少网络通讯 的压力,提高效率。你可能会问DataColumn在哪呢?Rows[3]就表示了第4行记录,换句话说Rows[3]就是一个DataRow对象,一加 上["MyName"]就自动定位到了MyName字段的内容。ADO.NET规定,访问表中内容必须是先行后列的原 则,Column["MyName"][3]是不允许的。当然,DataColumn也是什么重要的,比如想查看某列的列头(Field),可以用 Column[1].ColumnName更改。

转自http://blog.csdn.net/lihuhu/archive/2008/05/02/2358672.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值