将各数据库功能操作建立成接口形式,再建立一个工厂类,通过反射调用使工厂得以实例化。
1.建立一个接口
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace sqlfactory2
{
    public interface Isql
    {
        //声明一个部门查询接口
        DataTable work(string name);
    }

    public class InPat : Isql
    {
        //实现部门查询接口
        public DataTable work(string name)
        {
            SqlConnection con = new SqlConnection(@"Server=XXX;Integrated Security=True;Database=XXX");//连接数据库
            SqlDataAdapter adapter = new SqlDataAdapter("select * from CserviceInfo where CserviceInfo.Name='" + name + "'", con);
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            DataSet set = new DataSet();
            adapter.Fill(set, "dbo.CserviceInfo");
            return (set.Tables["dbo.CserviceInfo"]);
            con.Close();
        }
    }
}
2.建立一个工厂类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace sqlfactory2
{
    public class factory
    {
        public Isql Make(string Name)
        {
            Isql Mysql = null;
            Type type = Type.GetType(Name, true);//得到类型
            Mysql = (Isql)Activator.CreateInstance(type);//调用相应的接口
            return Mysql;
        }
    }
}
3.在要用到的地方利用放射调用工厂,以下简单举例
DataTable md;
 Isql Mysql;//声明一个接口类
 factory myfactory = new factory();//工厂类
 Mysql = myfactory.Make("sqlfactory2.InPat");//得到命名空间下的具体类
 md = Mysql.work(sectionId.Text.Trim());//调用相应的接口
以上是我自己的理解,请大家多多批评改正!最好大家能多多讨论下数据工厂的个人理解。