导航

第二章数据访问层(1)

Posted on 2011-05-17 22:10  土楼后生  阅读(264)  评论(0)    收藏  举报

      DAL的目标是创建数据访问类,业务层通过这些类从数据库中获取数据。在LINQ to SQL 出现之前,ADO.NET曾是与数据库通信的最佳方式,并且它与数据传递回业务层的方式(DataSet、类型化DataSet、DataReader标量值、实体对象等方式)无关,使用LINQ to SQL 后,开发人员将看不到DAL与数据库之间的通信,您接触的是DataContext对象以及实体对象,它们在后台进行ADO.NET调用。同时数据访问层还要考虑面对事务的处理问题。

      1.ADO.NET连接 using(SqlConnection cn= new SqlConnection(connectionString))using语句保证代码结束时自动关闭数据库连接

      2.动作查询 int recordsAffected=cmd.ExecuteNonQuery();返回受影响的行数,当执行更新语句并且需要知道记录是否实际得到更新时,就会用到该返回值。许多设计模式在每条记录是那个实用了一个Version的字段,并且将其原来的值作为Where子句的一部分进行传递,如果Version发生改变,那么更新语句就执行成功,但并不返回被更新的记录数。执行时通过给参数赋值调用实用存储过程可以有效防止SQL诸如攻击。

      3.DataSet无连接的,DataReader是有连接的,速度快,只进游标

         SqlDataReader reader=cmd.ExecuteReader();

         if(reader.HasRows)

         {

            reader.Read();

            …… 

         }

         DataSet ds=new DataSet();

         using(SqlDataAdapter da=new SqlDataAdapter(cmd))

         { da.Fill(ds,"UserAccount"); }

          string name=Convert.ToString(ds.Table["UserAccount"].Rows[0]["Name"]);由于DataSet中可能包含多个表,所以必须指定表名活索引

        4.标量查询:查询结果中只包含一条单字段记录的查询,如计算总行数 cmd.ExecuteScallar()

        5.SqlHelper:Microsoft网站中有提供http://msdn2.microsoft.com/en-us/library/aa480458.aspx下载,其中2.0的版本(在Enterprise Library之前)较简单实用