_ConnectionPtr::Open(...)函数能不能灵活连接数据库

aygrhnwms304 2008-08-28 09:55:31
_ConnectionPtr::Open(...)能够连接数据库,包含了多种方式,但共同点是:第一个参数是一个固定的字符串,也就是说第一个参数不能用变量来代替(不知道各位试过吗),那么这样就不能灵活连接各种数据库,不知道各位有什么见解或者好的解决方法,使第一个参数能够使用一个变量?
如:

_ConnectionPtr::Open(("DSN=...;..."),"","",adModeUnknown);
这样可以编译.

CString m_str=("DSN=...;...");
_ConnectionPtr::Open(m_str,"","",adModeUnknown);
则不能编译.
或者将m_str转换成_bstr_t甚至直接将m_str定义成_bstr_t类型的变量都不行.
...全文
614 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
内存泄漏 2008-08-30
  • 打赏
  • 举报
回复
用_bstr_t变量编译不了? 报什么错??
shakaqrj 2008-08-29
  • 打赏
  • 举报
回复
不能是变量?不会吧
mainlinn 2008-08-29
  • 打赏
  • 举报
回复
这样试试看
CString m_str=("DSN=...;...");
try
{
_ConnectionPtr pRs("ADODB.Connection");
pRs->Open((_bstr_t)m_str,"","",adModeUnknown);
//
]catch(...)
{
}
aygrhnwms304 2008-08-28
  • 打赏
  • 举报
回复
我说的流程是:创建一个空的EXCEL文件,然后连接这个数据库,对它进行操作。下次创建的与这次创建的文件是不一样的,所以我要求能够用变量代替固定字符串。
不知楼上所说的写一个对话框或者用.UDL文件是什么意思,能不能具体解释一下呢?
analysefirst 2008-08-28
  • 打赏
  • 举报
回复
或是直接用.UDL文件也可以
analysefirst 2008-08-28
  • 打赏
  • 举报
回复
你写一个对话框,让用户打开程序之前选择连接的就可以了嘛.
aygrhnwms304 2008-08-28
  • 打赏
  • 举报
回复
是的,一种是CString,一种是_bstr_t,转换后不能编译,可以试验一下。
alexmars19831026 2008-08-28
  • 打赏
  • 举报
回复
也就是说两次是不同的文件类型?
aygrhnwms304 2008-08-28
  • 打赏
  • 举报
回复
感谢楼上.
其实这些方法我已经试过了,但保存为变量是无法作为_ConnectionPtr::Open(...)的第一个参数的,_ConnectionPtr::Open(...)的第一个参数必须是"..."的形式而不能是变量的形式,不知道我说明白了吗?
alexmars19831026 2008-08-28
  • 打赏
  • 举报
回复
你可以建立一个对话框,这个对话框里面用来获得你所要连接的文件路径+包括数据库的名称,记录在DBname的CSring类型的成员变量里面,然后通过下面的方式实现了楼主说的灵活连接,我是这样做的,楼主可以试下先,如果有什么问题,再交流
CString me_temp;
me_temp.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='%s'",DBname);

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧