设计
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给我们提供了这么好的一个交流环境,祝愿博客园越办越好!
我们组正在做一些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给我们提供了这么好的一个交流环境,祝愿博客园越办越好!
相关文章推荐
- 网页使用无缓存
- 好矛盾,好彷徨,IT人
- XY.Graphics图象组件升级到1.0.0.56
- 化经典为传奇,《坦克大战》走上网络
- 未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
- Reading "Thinking in Java" #5
- tomcat中配置限制ip
- PANTONE 标准颜色基本色油墨
- 鬼子被扒光
- 奇迹重现 Delphi 2005赏析
- 几个常用函数
- javascript表单之间的数据传递
- C#中的类型转换
- 可控制的页面内滚动区域
- 项目开发计划
- Jmail的主要参数列表
- 下拉文件框的自定義控件
- 左右漂浮的广告代码
- 几个漂亮的Button的CSS
- 引用COM.Excel.dll创建XLS文件