日期:2014-05-16 浏览次数:20483 次
我们在实际应用开发中,经常会用到数据库迁移,以使我们开发的应用具有可迁移性,下面我采用反射技术,运用工厂模式编写了一个数据库迁移的小例子,如下:
本例中实现了 SQLSERVER 和 MySQL 的迁移
工厂中封装的主要方法可属性
获取程序集所在文件路径的成员变量:
private static readonly string AssemblyPath = ConfigurationManager.AppSettings["AssemblyPath"];
获取程序集命名空间的成员变量:
private static readonly string AssemblyName = ConfigurationManager.AppSettings["AssemblyName"];
创建引用命名空间的方法:
private static object CreateObject(string AssemblyPath, string classNamespace)
{
try
{
object objType = Assembly.LoadFile(AssemblyPath).CreateInstance(classNamespace);
return objType;
}
catch (System.Exception ex)
{
throw ex;
}
}
创建DbDataReader实例的方法:
public static DbDataReader CreaterDbDataReader()
{
string ClassNamespace = AssemblyName + "DataReader";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbDataReader)objType;
}
创建DbConnection实例的方法:
public static DbConnection CreateDbConnection()
{
string ClassNamespace = AssemblyName + "Connection";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbConnection)objType;
}
创建DbCommand实例的方法:
public static DbCommand CreateDbCommand()
{
string ClassNamespace = AssemblyName + "Command";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbCommand)objType;
}
创建DbDataAdapter实例的方法:
public static DbDataAdapter CreateDbDataAdapter()
{
string ClassNamespace = AssemblyName + "DataAdapter";
object objType = CreateObject(AssemblyPath, ClassNamespace);
return (DbDataAdapter)objType;
}
下面是封装的一些基本的数据访问抽象类的一些方法和属性:
获取连接字符串的成员变量:
public static string connectionString = ConfigurationManager.AppSettings["ConnectionString"];
/执行查询语句,返回SqlDataReader的方法:
public static DbDataReader ExecuteReader(string strSQL)