vc/mfc建立的单文档项目,开发数据库系统(Sql Server2000)。使用ODBC连接数据库,我连接数据库的语句比较简单:
try
{
CDatabase db;
if (db.Open("HHWL"))//HHWL为数据元名称
{
……
}
}
catch (……)
{
……
}所有连接数据元的地方,我都是这样写的。小弟的问题是,这样写是不是太简单了,会不会不稳定?怎么写比较好啊?第一次用ODBC,请高手指点……学习,关注……
try
{
CDatabase db;
if (db.Open("HHWL"))//HHWL为数据元名称
{
……
}
}
catch (……)
{
……
}所有连接数据元的地方,我都是这样写的。小弟的问题是,这样写是不是太简单了,会不会不稳定?怎么写比较好啊?第一次用ODBC,请高手指点……学习,关注……
简单不一定不稳定。try catch都加上了,好好的。
"连接的时候最好把用户ID和密码加进去吧。"就是不知道怎么加,才写的这么简单的啊!怎么加?我在书上看到怎么一个说法:
连接数据库的时候,不要把“用户ID和密码”加进去,特别是脚本语言中。原因是这样数据库容易被攻击。各位大侠觉的这种说法怎么样啊?对不对啊?
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL))
{
AfxMessageBox("初始化COM组件库错误");
}
下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
strODBC.Format("DSN=%s;UID=%s;PWD=%s", "jr", "sa", "");
try
{
if(!g_JRDatabase.OpenEx(strODBC, CDatabase::noOdbcDialog))
{
AfxMessageBox("初始化数据库失败,请与管理员联系");
return FALSE;
}
}
catch(CDBException *e)
{
TRACE(e->m_strError.GetBuffer(0));
AfxMessageBox("初始化数据库失败,请与管理员联系");
return FALSE;
}
ADO比ODBC稍微繁,但效率高,但分发软件时要注意客户的环境要一致。