您的位置:首页 > 其它

设计

2004-11-30 17:20 260 查看
(不知道放在首页行不行,如不行我马上撤下来)

我们组正在做一些c#.net winform的开发,由于将用到Oracle 和SQL SERVER 两种数据库,组长是这么做的:

1)有一个const类,里面有一个自定义的结构数组vDbArray,在主form初始化的时候,这个结构数组将装载各个数据库的名称、连接字符串以及类别(S代表SQL Server,O代表Oracle);

2)有一个Query类,实例化的时候传入数据库名称,根据数据库名称在vDbArray中查找到该数据库的类别,再根据类别定义是SqlConnection还是OleDbConnection;

3)Query类里面有几个函数:
private Object RunSqlQuery(string pSql)

{
...
//返回一个SqlDataReader
}

private Object RunOracleQuery(string pSql)
{
...
//返回一个OleDbDataReader
}

public Object RunSql(string pSql)
  {
   if(vDbIndex == -1)
    return null;

   switch(Const.vDbArray[vDbIndex].DbType)
   {
    case "S":    //SQL SERVER 数据库
     return RunSqlQuery(pSql);
    case "O":    //ORACLE 数据库
     return RunOracleQuery(pSql);
    default:
     return null;
   }
  }

4)编程的时候是这样调用的(简单地写,没有加上非空判断等):
Query pQuery = new Query("XXX") ;(你要知道这个XXX是什么数据库,比如这里是SQL Server)
Object pObj = pQuery.RunSql("...");
SqlDataReader pReader = (SqlDataReader)pObj;
wihile(pReader.Reader())
{
...
}
pReader.Close();

5)在数据库中还建了四个表,表1存储查询语句、FORM名及对应数据库名称,表2存储表一中查询语句对应的字段、及字段对应的FORM控件名称,表3存储存储过程名称、FORM名及对应的数据库名称,表4存储表3中存储过程的参数名称、长度等。
每做好一个FORM——比如一个简单的新增程序——,需要把该FORM中的控件、用到的SQL语句、控件对应的字段名称维护到表1和表2中,那么将来调用一个公用的函数,会自动把保存在表1表2中的SQL查询出来的数据填到各个控件中去。在保存的时候(保存必须写一个存储过程,不管是否只是一个简单的insert),调用一个公用的函数,传入该FORM名(不是存储过程名称)和各参数值(按顺序放在一个hashtable中)。

大致如此了,组长说他的目的是为了将来方便维护。不知道大家有什么看法(纯技术角度)。

最后,感谢dudu给我们提供了这么好的一个交流环境,祝愿博客园越办越好!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: