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());//调用相应的接口
以上是我自己的理解,请大家多多批评改正!最好大家能多多讨论下数据工厂的个人理解。