您的位置:首页 > 其它

VC 利用UDL文件建立ADO连接 常见错误

2013-04-16 08:58 381 查看
参考链接:http://www.vckbase.com/index.php/wv/82

参考文献:百度百科

1、如何创建UDL文件

新建1个txt文件,修改后缀名为 .udl,保存,无视警告!

双击这个udl文件,弹出udl文件配置对话框,配置方法如下:

配置通用数据链接 (.udl) 文件
1.双击通用数据链接 (.udl) 文件。
“数据链接属性”对话框打开,显示以下选项卡:“提供者”、“连接”、“高级”和“所有”。选择“下一步”在选项卡中定位。
2.在“提供者”选项卡上,选择数据库提供程序。
3.在“连接”选项卡上,或者选择可用提供程序的数据源名称 (DSN),或者输入自定义连接字符串。系统中预定义的提供程序的有效 DSN 显示在“使用数据源”下拉列表中。
4.使用“高级”选项卡查看并设置数据的其他初始化属性。
5.使用“所有”选项卡复查并编辑可用于 OLE DB 提供程序的所有 OLE DB 初始化属性。
6.选择“确定”以便将连接字符串保存到通用数据链接 (.udl) 文件中。
有关更多信息,请参见“数据链接属性”对话框。
数据链接文件格式
通用数据链接 (.udl) 文件的前两行必须与此内容完全相同:
[oledb]
; Everything after this line is an OLE DB initstring
在这两个必需的行之后,.udl 文件的其余部分由用同样格式写成的连接字符串组成。当从编程代码中打开数据库时使用该字符串。下面的列表给出了一个 .udl 文件的完整文本,此文件使用 Microsoft SQL Server 的 OLE DB 提供程序打开使用集成安全性的 Northwind 数据库。
[oledb]
; Everything after this line is an OLE DB initstring
Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=a-iresmi2000;Initial Catalog=Northwind;Integrated Security=SSPI

2、如何在VC中动态连接数据库?

下面例子使用my_data1.udl来创建ADO连接。

1.
_ConnectionPtr m_pDBConn;

2.

3.
m_pDBConn.CreateInstance(__uuidof(Connection));

4.

5.
m_pDBConn->ConnectionString =
"File Name=c:\mydir\my_data1.udl"
;

6.

7.
m_pDBConn->Open(
""
,
""
,
""
,NULL);


或直接使用:

m_pConnection->Open(L”File Name=D:\\vc\\MyConn.udl”,L”",L”",-1); (不要这样用!!!会出错!详见下面的错误解释)


这样一来无论数据源如何变化,在软件中都可以用统一的方法编程。当数据源改变时,只要双击相应的udl文件即可可视化地设置数据源,无需更改软件。

建议完整的代码如下:

// 4、利用ADO Connection 对象 连接数据库

//连接指针

_ConnectionPtr m_pConnection;

if (m_pConnection)

{

if(m_pConnection->GetState() != adStateClosed)

{

m_pConnection->Close();// 检查机制

}

}

else

{

::MessageBox(NULL,"错误信息: Connection对象为空", "错误 ",MB_ICONEXCLAMATION);

return FALSE;

}

try // 异常机制

{

m_pConnection->ConnectionString = "File Name=.\\JunJunConnection.udl";

m_pConnection->Open("", "", "", NULL);

}

catch(_com_error &e)

{

CString strComError;

strComError.Format( "错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s ",

e.Error(),// 错误编号

e.ErrorMessage(), // 错误信息

(LPCSTR) e.Source(), // 错误源

(LPCSTR) e.Description()); // 错误描述

::MessageBox(NULL,strComError, "PressureMonitor错误 ",MB_ICONEXCLAMATION);

return FALSE;

}

return TRUE;

3、为什么我按照上面的方法设置了,在运行软件的时候仍然连接不上呢?

错误1:



错误原因:你的程序没有找到你所指定的udl文件,解决方法:1、确认你的udl路径和实际文件位置;2、不要用
m_pConnection->Open(L”File Name=D:\\vc\\MyConn.udl”,L”",L”",-1);




错误2:



解决办法:把绝对路径换成相对路径,具体就是把你的udl文件放到你软件的当前目录下,然后修改路径为

m_pConnection->ConnectionString = "File Name=.\\JunJunConnection.udl";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: