首先向大家推荐个博客http://www.cnblogs.com/zhaopei/p/4823359.html ,感觉他写的真的挺不错的。
三层指的是以下三层
- 用户界面表示层(USL)
- 业务逻辑层(BLL)
- 数据访问层(DAL)
首先,写个数据库访问的接口
public interface ISqlHelper { int add(string str); void select(); //...省略具体实现,如修改 删除 查询 }
然后,创建一个Mysql数据库的DAL,和一个Oracle的DAL
public class DALMsSqlHelper : ISqlHelper { public int add(string str) { //...省略具体实现 Console.WriteLine("我是mysql"); return 1; } public void select() { Console.WriteLine("我从Mysql数据库中取数据"); } //...省略具体实现,如修改 删除 查询}public class DALOracleSqlHelper : ISqlHelper } public class DALOracleSqlHelper : ISqlHelper { public int addOracle(string str) { //...省略具体实现 return 1; } //...省略具体实现,如修改 删除 查询 public int add(string str) { //...省略具体实现 Console.WriteLine("我是oracle"); return 1; } public void select() { Console.WriteLine("我从Oracle数据库中取数据"); } }
再写一个业务逻辑层
public class BLLAddStudent { ISqlHelper SqlHelp = null; public BLLAddStudent(ISqlHelper sqlhelper) { SqlHelp = sqlhelper; } public int addStudent() { string str = ""; //...省略具体实现 return SqlHelp.add(str); } public void select() { SqlHelp.select(); } }
public class Program { public static void Main(string[] args) { ISqlHelper sqlhelper = new DALOracleSqlHelper(); BLLAddStudent s = new BLLAddStudent(sqlhelper); s.addStudent(); s.select(); Console.ReadKey(); } }
public class Program { public static void Main(string[] args) { ISqlHelper sqlhelper = new DALMsSqlHelper();//修改为Mysql BLLAddStudent s = new BLLAddStudent(sqlhelper); s.addStudent(); s.select(); Console.ReadKey(); } }
通过配置文件和反射 动态创建
<?xml version="1.0" encoding="UTF-8"?> <Configs> <Config> <Name>ConsoleApplication1.DALMsSqlHelper</Name> </Config> </Configs>
XmlElement theUser = null, root = null; XmlDocument xmldoc = new XmlDocument(); xmldoc.Load("Config.xml"); root = xmldoc.DocumentElement; theUser = (XmlElement)root.SelectSingleNode("/Configs/Config"); string confi = theUser.GetElementsByTagName("Name").Item(0).InnerText; Assembly asm = Assembly.GetExecutingAssembly(); ISqlHelper sqlhelper = (ISqlHelper)asm.CreateInstance(confi, true);//true:不区分大小写 BLLAddStudent s = new BLLAddStudent(sqlhelper); s.addStudent(); s.select(); Console.ReadKey();