前几天自己作了一个对话框,终于可以动态连接数据库了(SE我是连接通过了的),下面是具体的代码。不过是连接Oracle的,如果要连接其他数据库,必须修改“Provider=MSDAORA;”这儿,这也是一个缺陷吧。
本来UDL也可以连接的,可惜我没有成功,如果那位有兴趣,可以去试试,我本来有一点代码,可惜一时没找到。不过要是谁连通了请说一声。
int Init;
_ConnectionPtr m_pConnection;
HRESULT hConnection;
static int i=AfxOleInit(); //初始化 com 接口
void InitDatabase()
{
CString TempShuJuYuan,TempYongHuMing,TempMiMa,str;
Init=1; //默认会写入数据源,用户名和密码//
hConnection= m_pConnection.CreateInstance("ADODB.Connection");
try
{
if(SUCCEEDED(hConnection))
{
CInitDataBaseDialog dlg;
if(dlg.DoModal()==IDOK)
{
TempShuJuYuan=dlg.m_ShuJuYuan;
TempYongHuMing=dlg.m_YongHuMing;
TempMiMa=dlg.m_MiMa;
}
else
{
Init=0;
return;
}
str.Format("rovider=MSDAORA;Data Source=%s;User ID=%sassword=%s;",TempShuJuYuan,TempYongHuMing,TempMiMa);
_bstr_t bstr(str);
hConnection =m_pConnection->Open(bstr,"","",adModeUnknown);
AfxMessageBox("数据库连接成功!");
}
}
catch(_com_error e)///捕捉异常
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s",e.ErrorMessage());
AfxMessageBox(errormessage);///显示错误信息
}
} |