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

2023-10-18 08:10

本文主要是介绍VC 利用UDL文件建立ADO连接 常见错误,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考链接: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";

 

这篇关于VC 利用UDL文件建立ADO连接 常见错误的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/231314

相关文章

W外链微信推广短连接怎么做?

制作微信推广链接的难点分析 一、内容创作难度 制作微信推广链接时,首先需要创作有吸引力的内容。这不仅要求内容本身有趣、有价值,还要能够激起人们的分享欲望。对于许多企业和个人来说,尤其是那些缺乏创意和写作能力的人来说,这是制作微信推广链接的一大难点。 二、精准定位难度 微信用户群体庞大,不同用户的需求和兴趣各异。因此,制作推广链接时需要精准定位目标受众,以便更有效地吸引他们点击并分享链接

Java 连接Sql sever 2008

Java 连接Sql sever 2008 /Sql sever 2008 R2 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class TestJDBC

VC网络协议

// PCControlDlg.cpp : 实现文件//#include "stdafx.h"#include "PCControl.h"#include "PCControlDlg.h"#include "afxdialogex.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框#ifde

建立升序链表

题目1181:遍历链表 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2744 解决:1186 题目描述: 建立一个升序链表并遍历输出。 输入: 输入的每个案例中第一行包括1个整数:n(1<=n<=1000),接下来的一行包括n个整数。 输出: 可能有多组测试数据,对于每组数据, 将n个整数建立升序链表,之后遍历链表并输出。 样例输

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

JVM 常见异常及内存诊断

栈内存溢出 栈内存大小设置:-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB,window 的默认大小依赖于虚拟机内存。 栈帧过多导致栈内存溢出 下述示例代码,由于递归深度没有限制且没有设置出口,每次方法的调用都会产生一个栈帧导致了创建的栈帧过多,而导致内存溢出(StackOverflowError)。 示例代码: 运行结果: 栈帧过大导致栈内存

nginx长连接的问题

转自: http://www.360doc.com/content/12/1108/17/1073512_246644318.shtml

NGINX轻松管理10万长连接 --- 基于2GB内存的CentOS 6.5 x86-64

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=190176&id=4234854 一 前言 当管理大量连接时,特别是只有少量活跃连接,NGINX有比较好的CPU和RAM利用率,如今是多终端保持在线的时代,更能让NGINX发挥这个优点。本文做一个简单测试,NGINX在一个普通PC虚拟机上维护100k的HTTP

TL-Tomcat中长连接的底层源码原理实现

长连接:浏览器告诉tomcat不要将请求关掉。  如果不是长连接,tomcat响应后会告诉浏览器把这个连接关掉。    tomcat中有一个缓冲区  如果发送大批量数据后 又不处理  那么会堆积缓冲区 后面的请求会越来越慢。