在web.config的<appSettings>配置节中定义名webDAL键,它的值为所需访问的数据库对应的程序集名称,如你访问数据库为mssql,对应的项目文件为prjName.SqlServerDAL.dll(命名空间为prjName.SqlServerDAL)则webDAL的值为prjName.SqlServerDAL
当程序运行时由工厂类DalFactory调用ConfingurationManager类的AppSettings方法获取web.config中的键值,采用反射技术动态加载指定类型
数据访问层接口类
访问SqlServer数据库的具体数据访问类
访问oracle数据库访问类
1 <appSettings>
2 <!--设置数据访问层程序集,sql为prjName.SQLServerDAL,oracle为prjName.OracleDAL -->
3 <add key="WebDAL" value="prjName.SQLServerDAL"/>
4 </appSettings>
5
2 <!--设置数据访问层程序集,sql为prjName.SQLServerDAL,oracle为prjName.OracleDAL -->
3 <add key="WebDAL" value="prjName.SQLServerDAL"/>
4 </appSettings>
5
当程序运行时由工厂类DalFactory调用ConfingurationManager类的AppSettings方法获取web.config中的键值,采用反射技术动态加载指定类型
1 using System.Reflection;
2 using System.Configuration;
3
4 namespace prjName.DALFactory {
5 /// <summary>
6 /// 工厂类,用于创建产品类实例
7 /// </summary>
8 public sealed class DataAccess {
9
10 // 获取使用的程序集的名称
11 private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
12 private DataAccess() { }
13
14 public static prjName.IDAL.IDal CreateDal() {
15 string className = path + ".userDal";
16 return (prjName.IDAL.IDal)Assembly.Load(path).CreateInstance(className);
17 }
18
19 }
20 }
2 using System.Configuration;
3
4 namespace prjName.DALFactory {
5 /// <summary>
6 /// 工厂类,用于创建产品类实例
7 /// </summary>
8 public sealed class DataAccess {
9
10 // 获取使用的程序集的名称
11 private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
12 private DataAccess() { }
13
14 public static prjName.IDAL.IDal CreateDal() {
15 string className = path + ".userDal";
16 return (prjName.IDAL.IDal)Assembly.Load(path).CreateInstance(className);
17 }
18
19 }
20 }
数据访问层接口类
1 namespace prjName.IDAL {
2
3 /// <summary>
4 /// 产品抽象类
5 /// </summary>
6 public interface IDal{
7
8 /// <summary>
9 /// 从数据库中查询用户信息
10 /// </summary>
11 userInfo getUserInfo(string userId,string pwd);
12 }
13 }
2
3 /// <summary>
4 /// 产品抽象类
5 /// </summary>
6 public interface IDal{
7
8 /// <summary>
9 /// 从数据库中查询用户信息
10 /// </summary>
11 userInfo getUserInfo(string userId,string pwd);
12 }
13 }
访问SqlServer数据库的具体数据访问类
1 namespace prjName.SQLServerDAL {
2
3 public class userDal : IDal {
4 /// <summary>
5 /// 从数据库中获取用户信息
6 /// </summary>
7
8 public userInfo GetUserInfo(string userId) {
9
10 //省略数据库访问代码
11 // :
12 // :
13
14 }
15 }
16 }
2
3 public class userDal : IDal {
4 /// <summary>
5 /// 从数据库中获取用户信息
6 /// </summary>
7
8 public userInfo GetUserInfo(string userId) {
9
10 //省略数据库访问代码
11 // :
12 // :
13
14 }
15 }
16 }
访问oracle数据库访问类
1 namespace prjName.oracleDAL {
2
3 public class userDal : IDal {
4 /// <summary>
5 /// 从数据库中获取用户信息
6 /// </summary>
7
8 public userInfo GetUserInfo(string userId) {
9
10 //省略数据库访问代
11 // :
12 // :
13
14 }
15 }
16 }
2
3 public class userDal : IDal {
4 /// <summary>
5 /// 从数据库中获取用户信息
6 /// </summary>
7
8 public userInfo GetUserInfo(string userId) {
9
10 //省略数据库访问代
11 // :
12 // :
13
14 }
15 }
16 }