日期:2014-05-18 浏览次数:20589 次
public sealed class odbHelper
{
public static OleDbDataReader ExecuteDataReader(string ASqlStr)
{
OleDbConnection cn = new OleDbConnection(cnStr);
cn.Open();
OleDbDataReader dr = null;
try
{
OleDbCommand cmd = new OleDbCommand(ASqlStr, cn);
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
catch (OleDbException ex)
{
EventLog.WriteEntry(EventLogSource, ex.Message + " " + ASqlStr);
throw new Exception("SQL错误: " + ex.Message);
}
//finally
//{
// cn.Close();
//}
}
}
public sealed class mydbHelper
{
public OleDbDataReader dr;
public mydbHelper(){
}
}
mydbHelper mydb = new mydbHelper();
mydb.dr=odbHelper.ExecuteDataReader(sql);
public abstract class TestDataProviderBase
{
public abstract string GetTestName();
public static TestDataProviderBase Instance()
{
//这里应该从配置文件读数据,利用反射实例化当前提供者(单件)
return null;
}
};
public class OleTestDataProviderBase:TestDataProviderBase
{
public override string GetTestName()
{
return "Access";
}
}
public class SqlTestDataProviderBase:TestDataProviderBase
{
public override string GetTestName()
{
return "Sql";
}
}
public class InvokeDemo
{
public void Test()
{
string str = TestDataProviderBase.Instance().GetTestName();
}
};
------解决方案--------------------
有现成的...
Microsoft Enterprise Library 之 Microsoft.Practices.EnterpriseLibrary.Data
你把它的代码全看懂了就成高手了...
------解决方案--------------------
建议学习参考 petshop4.0中关于数据库部分的设计 。正好满足LZ的需求 。
------解决方案--------------------
olu.desktopit.net 这里是一个用户在线模块,功能比较简单,就是用这种思路实现的,有全部的c#源码可下,你可以去看看
------解决方案--------------------
理由抽象工程 加上 反射来实现
petshop cs .text 都是 看一下源码就知道了 其实简单点说就说用借口来编程
------解决方案--------------------
接口或抽象类,低层封装,外层只管获得数据数
这个应该是基本的OO吧
------解决方案--------------------
接口或抽象类,低层封装,外层只管获得数据数