BOOL JDatabase::OpenDB(LPCTSTR localset,LPCTSTR DBclass){
_bstr_t strConnect;
try{
#if ACCESS && Jtoupper(DBclass)
conn->Open("Provider = Microsoft.Jet.OLEDB.4.0;DataSource = localset ","","",adModeUnknown);
#else
#if (SQL && Jtouper(DBclass))
strConnect = " Provider=SQLOLEDB; Server=billgates;Database=HrMan; uid=sa; pwd=sa;" ;
conn->Open(strConnect,"","",adModeUnknown);
#endif
#endif
}
catch(_com_error e ){
error("OpenDB function");
}
return TRUE;
}
大家看看这个函数设计的有没有什么问题如果有请问需要怎么改
_bstr_t strConnect;
try{
#if ACCESS && Jtoupper(DBclass)
conn->Open("Provider = Microsoft.Jet.OLEDB.4.0;DataSource = localset ","","",adModeUnknown);
#else
#if (SQL && Jtouper(DBclass))
strConnect = " Provider=SQLOLEDB; Server=billgates;Database=HrMan; uid=sa; pwd=sa;" ;
conn->Open(strConnect,"","",adModeUnknown);
#endif
#endif
}
catch(_com_error e ){
error("OpenDB function");
}
return TRUE;
}
大家看看这个函数设计的有没有什么问题如果有请问需要怎么改
2 try...catch中,捕获异常并处理后,返回FALSE.
3 条件编译应该是这样
#ifdef ACCESS
或
#if defined ACCESS
在所有编译条件都不满足时,给个错误提示
#ifdef ACCESS
#else
#ifdef SQL
#else
未指定数据库类型
#endif
#endif
用
#ifdef
#else
#endif
来控制预编译变量。或者直接用参数控制。
BOOL JDatabase::OpenDB(LPCTSTR localset,LPCTSTR DBclass , bool bAccess)
{
_bstr_t strConnect;
try{
CharUpperBuff(DBclass ,lstrlen(DBclass));
if( bAccess )
{
conn->Open("Provider = Microsoft.Jet.OLEDB.4.0;DataSource = localset ","","",adModeUnknown);
}
else
{
strConnect = " Provider=SQLOLEDB;Server=billgates;Database=HrMan; uid=sa; pwd=sa;" ;
conn->Open(strConnect,"","",adModeUnknown);
}
}
catch(_com_error e ){
error("OpenDB function");
}
return TRUE;
}
在函数里怎么没看到DBclass 的使用。
我不知道你设计这个函数的意图是什么?
char* u = "This is com";
*(u+i) = toupper(*(u+i));
可以从u+i地址中读取数据为什么不能写入呢!
还有条件编译在什么情况下使用!以及使用的条件是什么
error("OpenDB function");
}
改为:
catch(_com_error e ){
error("OpenDB function");
return FALSE;
}