愚见未来

人的思想时时刻刻都在进步,如果你早上起床,想起昨天所做的事情是那么幼稚和迂腐,那么恭喜你,你又变得成熟一点了!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

调用可移植数据访问层(二)

Posted on 2010-01-19 14:19  愚见未来  阅读(237)  评论(0编辑  收藏  举报
调用可移植数据访问层的数据接口代码如下:
using System;
using System.Data;
using System.Data.Common;
using System.Configuration;    

namespace DAL
{
   public class CustomersData
   {
      public DataTable GetCustomers()
      {
         string ConnectionString = 
            ConfigurationSettings.AppSettings
            ["ConnectionString"];
         DatabaseType dbtype = 
            (DatabaseType)Enum.Parse
            (typeof(DatabaseType),
            ConfigurationSettings.AppSettings
            ["DatabaseType"]);

         IDbConnection cnn = 
            DataFactory.CreateConnection
            (ConnectionString,dbtype);

         string cmdString = "SELECT CustomerID" +
            ",CompanyName,ContactName FROM Customers";

         IDbCommand cmd = 
            DataFactory.CreateCommand(
            cmdString, dbtype,cnn);

            DbDataAdapter da = 
               DataFactory.CreateAdapter(cmd,dbtype); 

         DataTable dt = new DataTable("Customers");

         da.Fill(dt);

         return dt;
      }
        
      public CustomersDS GetCustomerOrders(string CustomerID)
      {
         // 待定
         return null;
      }
      public CustomersList GetCustomersByCountry
         (string CountryCode)
      {
         // 待定
         return null;
      }
      public bool InsertCustomer()
      {
         // 待定
         return false;
      }
   }
}

CustomerData 类的 GetCustomers() 方法中,我们可以看到通过读取配置文件中的信息。可以使用 DataFactory 类通过特定连接字符串创建 XxxConnection 实例,并编写与基本数据源没有特定依赖性的其余代码部分。

与数据层交互的一个业务层类示例看起来可能类似下面这样:

using System;
using System.Data; 
using DAL;

namespace BLL
{
    public class Customers
    {
        public DataTable GetAllCustomers()
        {
            CustomersData cd = new CustomersData();  
            DataTable dt = cd.GetCustomers();
            return dt;
        }
        public DataSet GetCustomerOrders()
        {
            // 待定
            return null;
        }
    }
}