vs2010下的C++MFC基于对话框程序如何连接数据库

Mr_D 2011-11-14 09:29:37
vs2010下的C++MFC基于对话框程序可以连接SQL2008的数据库吗?怎么连接法?
...全文
933 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
玉竹儿90 2014-08-08
  • 打赏
  • 举报
回复
请问hr是什么?为什么代码运行错误,提示:未声明的标识符
Mr_D 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 keiy 的回复:]
另外,2008的连接串参考
http://wenku.baidu.com/view/551fb613cc7931b765ce156d.html
[/Quote]
可以告诉我你的QQ吗?我想向你虚心请教
Mr_D 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 keiy 的回复:]
hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=ChaoShiWang_2;Integrated Security=True;Data Source=(local)","","",adModeUnknown);
你的用户名/口令呢?
我的用户名是sa,空口令
另……
[/Quote]
integrated security=true 的意思是集成验证,也就是说使用Windows验证的方式去连接到数据库服务器。这样方式的好处是不需要在连接字符串中编写用户名和密码
这是我从网上找的,而且我自己用C#也是这样连接数据库的。只是不知道怎么应用在MFC里面
柯本 2011-11-16
  • 打赏
  • 举报
回复
柯本 2011-11-16
  • 打赏
  • 举报
回复
hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=ChaoShiWang_2;Integrated Security=True;Data Source=(local)","","",adModeUnknown);
你的用户名/口令呢?
我的用户名是sa,空口令
另外Data Source=(local),一般没()的,且如是本地,要么localhost,要么是127.0.0.1
Mr_D 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dic_008 的回复:]
http://blog.csdn.net/dic_008/article/details/6913715
使用ADO连接数据库
[/Quote]
看得好晕。。。。
Mr_D 2011-11-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 keiy 的回复:]
我#1的,去掉TRACE("%s\n",m_sConn);
就应该是正确的
你也可参考LS的
[/Quote]
hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=ChaoShiWang_2;Integrated Security=True;Data Source=(local)","","",adModeUnknown);
我把你上面的字符串改为这个,但是程序运行的结果老是“不能打开数据库!”
是我上面的字符串定义错了吗?
柯本 2011-11-15
  • 打赏
  • 举报
回复
我#1的,去掉TRACE("%s\n",m_sConn);
就应该是正确的
你也可参考LS的
dic_008 2011-11-15
  • 打赏
  • 举报
回复
Mr_D 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]
不好意思,那是我从两段程序提取时搞错了,这个应该没有
原来是连接oracle的连接串
CString m_sConn;//="Provider=OraOLEDB.Oracle.1;Password=test;Persist Security Info=True;User ID=test;Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = ……
[/Quote]
这个看得我好晕。。。
究竟哪个是正确的啊?可以在发一次吗?
柯本 2011-11-15
  • 打赏
  • 举报
回复
不好意思,那是我从两段程序提取时搞错了,这个应该没有
原来是连接oracle的连接串
CString m_sConn;//="Provider=OraOLEDB.Oracle.1;Password=test;Persist Security Info=True;User ID=test;Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.115)(PORT = 1521)) )(CONNECT_DATA = (SID = ora8)))\"";
m_sConn.Format("Provider=OraOLEDB.Oracle.1;Password=%s;Persist Security Info=True;User ID=%s;Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = %s)(PORT = 1521)) )(CONNECT_DATA = (SID = %s)))\"",strPWD,strUID,strIP,strDB);
TRACE("%s\n",m_sConn);
Mr_D 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keiy 的回复:]
连接数据库与项目的类型无关的,无论是多文档,单文档甚至是命令行方式,都可以连接数据库的
一般情况下,可用ADO,在你的XXXDlg.cpp头上加
#import "x:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
给你以前我的一段测试程序参考(仅供参考):

……
[/Quote]
请问,你留给我的答复中TRACE("%s\n",m_sConn);
的m_sConn是什么类型的定义啊?
柯本 2011-11-14
  • 打赏
  • 举报
回复
连接数据库与项目的类型无关的,无论是多文档,单文档甚至是命令行方式,都可以连接数据库的
一般情况下,可用ADO,在你的XXXDlg.cpp头上加
#import "x:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
给你以前我的一段测试程序参考(仅供参考):

void CTestdbDlg::OnButton2()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance("ADODB.Connection");///创建Connection对象
m_pConnection->ConnectionTimeout = 8;
TRACE("%s\n",m_sConn);
try{

hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=Server","","",adModeUnknown);
if (FAILED(hr))
{
AfxMessageBox("不能连接数据库!");
return ;
}
else
AfxMessageBox("连接数据库成功!");
}
catch(_com_error e)
{
AfxMessageBox("不能打开数据库!");
return ;
}


}

要注意是的,我的项目是多字符集的(非unicode),你的字串前要加_T()

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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