VC使用UDL文件建立ADO连接

最近在改一个VC的项目,需要灵活的配置数据库连接,我用到了数据链接文件,使用UDL文件必须在系统中先安装Microsoft MDACWin 2000以后的版本中都自动包含了该组件。关于UDL的使用只强调两点。

m_pConnection->ConnectionString = "File Name = my_datal.udl";   


这一句有两个错误


1、
等于号左右的空格一定要去掉,即:

m_pConnection->ConnectionString = "File Name=my_datal.udl";


2、UDL

文件最好要写绝对路径,否则可能出现0X80030002的未知错误。即:

m_pConnection->ConnectionString = "File Name=D://my_datal.udl";

最好是使用

GetModuleFilename(NULL...)得到当前程序文件所在路径,然后从中提取出所在路径,我写的连接部分代码,UDL文件和程序可执行文件在同一目录下。
  1. try
  2.     {
  3.         char dbfName[MAX_PATH];
  4.         GetModuleFileName(NULL,dbfName,MAX_PATH);
  5.         char *pstr = strrchr(dbfName,'//');
  6.         if (pstr != NULL)
  7.         {
  8.         *pstr = '/0';
  9.         strcat(dbfName,"//conn.udl");
  10.         }
  11.         CString sConn;
  12.         sConn.Format("File Name=%s",dbfName);
  13.         hr = m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
  14.         if(SUCCEEDED(hr))
  15.         {
  16.             m_pConnection->Open(_bstr_t(sConn),"","",adModeUnknown);
  17.             m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb","","",adModeUnknown);///连接数据库
  18.         }
  19.     }
  20.     catch(_com_error e)///捕捉异常
  21.     {
  22.         CString errormessage;
  23.         errormessage.Format("连接数据库失败!/r/n错误信息:%s",e.ErrorMessage());
  24.         AfxMessageBox(errormessage);///显示错误信息
  25.         return FALSE;
  26.     } 



 

你可能感兴趣的