14 个解决方案
#1
连接数据库与项目的类型无关的,无论是多文档,单文档甚至是命令行方式,都可以连接数据库的
一般情况下,可用ADO,在你的XXXDlg.cpp头上加
#import "x:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
给你以前我的一段测试程序参考(仅供参考):
要注意是的,我的项目是多字符集的(非unicode),你的字串前要加_T()
一般情况下,可用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()
#2
请问,你留给我的答复中TRACE("%s\n",m_sConn);
的m_sConn是什么类型的定义啊?
#3
不好意思,那是我从两段程序提取时搞错了,这个应该没有
原来是连接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);
原来是连接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);
#4
这个看得我好晕。。。
究竟哪个是正确的啊?可以在发一次吗?
#6
我#1的,去掉TRACE("%s\n",m_sConn);
就应该是正确的
你也可参考LS的
就应该是正确的
你也可参考LS的
#7
hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=ChaoShiWang_2;Integrated Security=True;Data Source=(local)","","",adModeUnknown);
我把你上面的字符串改为这个,但是程序运行的结果老是“不能打开数据库!”
是我上面的字符串定义错了吗?
#8
看得好晕。。。。
#9
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
你的用户名/口令呢?
我的用户名是sa,空口令
另外Data Source=(local),一般没()的,且如是本地,要么localhost,要么是127.0.0.1
#11
integrated security=true 的意思是集成验证,也就是说使用Windows验证的方式去连接到数据库服务器。这样方式的好处是不需要在连接字符串中编写用户名和密码
这是我从网上找的,而且我自己用C#也是这样连接数据库的。只是不知道怎么应用在MFC里面
#12
#13
可以告诉我你的QQ吗?我想向你虚心请教
#14
请问hr是什么?为什么代码运行错误,提示:未声明的标识符
#1
连接数据库与项目的类型无关的,无论是多文档,单文档甚至是命令行方式,都可以连接数据库的
一般情况下,可用ADO,在你的XXXDlg.cpp头上加
#import "x:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
给你以前我的一段测试程序参考(仅供参考):
要注意是的,我的项目是多字符集的(非unicode),你的字串前要加_T()
一般情况下,可用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()
#2
请问,你留给我的答复中TRACE("%s\n",m_sConn);
的m_sConn是什么类型的定义啊?
#3
不好意思,那是我从两段程序提取时搞错了,这个应该没有
原来是连接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);
原来是连接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);
#4
这个看得我好晕。。。
究竟哪个是正确的啊?可以在发一次吗?
#5
#6
我#1的,去掉TRACE("%s\n",m_sConn);
就应该是正确的
你也可参考LS的
就应该是正确的
你也可参考LS的
#7
hr = m_pConnection->Open("Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=ChaoShiWang_2;Integrated Security=True;Data Source=(local)","","",adModeUnknown);
我把你上面的字符串改为这个,但是程序运行的结果老是“不能打开数据库!”
是我上面的字符串定义错了吗?
#8
看得好晕。。。。
#9
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
你的用户名/口令呢?
我的用户名是sa,空口令
另外Data Source=(local),一般没()的,且如是本地,要么localhost,要么是127.0.0.1
#10
#11
integrated security=true 的意思是集成验证,也就是说使用Windows验证的方式去连接到数据库服务器。这样方式的好处是不需要在连接字符串中编写用户名和密码
这是我从网上找的,而且我自己用C#也是这样连接数据库的。只是不知道怎么应用在MFC里面
#12
#13
可以告诉我你的QQ吗?我想向你虚心请教
#14
请问hr是什么?为什么代码运行错误,提示:未声明的标识符