C++连接数据库的问题。
在#import"c\:ProgramFiles\CommonFiles\System\ADO\msado15.dll"no_namespacerename("EOF",...
在#import "c\:Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")的时候报错啊,“无法打开源文件msado15.tlh”,这是什么情况?我用的是VS2010和SQL Server2008
展开
3个回答
展开全部
1、通过ADO连接MySql数据库,首先得安装MyODBC服务器程序。
(1)MyODBC版本要和MySql的版本对应上,否则会连接不上数据库。版本分别是mysql-5.1.48-win32.msi和mysql-connector-odbc-5.1.5-win32.msi。
(2)安装好后,点击开始菜单->设置->控制面板->管理工具->数据源(ODBC)->用户DSN->添加->选择MySQL ODBC 5.1 Driver。
(3)然后双击MySQL ODBC 5.1 Driver进行配置。配置好可以点Test进行下测试,如果能连上会弹出connection successful对话框。
(4)Data Source Name:中的内容就是代码里DSN所对应的值。
例如:"DSN=MySqlODBC;server=localhost;database=test"。
2、配置好后,就可以开始编码了。
(1)首先导入ADO类型库。#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")。
环境中msado15.dll不一定在这个目录下,请按实际情况修改。或者把msado15.dll这个文件拷贝到你的工程目录下,直接#import "msado15.dll" \ no_namespace \rename ("EOF", "adoEOF")包含进来。
(2 )创建Connection对象并连接数据库
{
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
//设置连接时间
m_pConnection->ConnectionTimeout = 5;
//打开数据库连接
HRESULT hr = m_pConnection->Open("DSN=MySqlODBC;server=localhost;database=test","root","root",adModeUnknown);
}
catch(_com_error &e) {
MessageBox(NULL, e.Description(), _T(""), MB_OK); return FALSE;
}
return TRUE;
}
(3)执行SQL语句
BOOL CDBManagerSub::ExecuteSQL( _bstr_t bstrSQL )
{ // _variant_t RecordsAffected;
try
{
// 是否已经连接数据库
if(m_pConnection == NULL)
{ //重新连接数据库 Open(m_dbType, m_strServer, m_strUserName, m_strPasswor, m_strDBName);
} // Connection对象的Execute方法:(_bstr_t CommandText, // VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 参数RecordsAffected是操作完成后所影响的行数,
// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名 // adCmdProc-存储过程;adCmdUnknown-未知
_RecordsetPtr hr = m_pConnection->Execute(bstrSQL,NULL,adCmdText); return true;
}
catch(_com_error e)
{
MessageBox(NULL, e.Description(), _T(""), MB_OK); return false;
}
}
_bstr_t bstrSQL为输入的SQL语句,如果返回TRUE,则执行成功,返回FLASH则会报对应的错误提示。
(1)MyODBC版本要和MySql的版本对应上,否则会连接不上数据库。版本分别是mysql-5.1.48-win32.msi和mysql-connector-odbc-5.1.5-win32.msi。
(2)安装好后,点击开始菜单->设置->控制面板->管理工具->数据源(ODBC)->用户DSN->添加->选择MySQL ODBC 5.1 Driver。
(3)然后双击MySQL ODBC 5.1 Driver进行配置。配置好可以点Test进行下测试,如果能连上会弹出connection successful对话框。
(4)Data Source Name:中的内容就是代码里DSN所对应的值。
例如:"DSN=MySqlODBC;server=localhost;database=test"。
2、配置好后,就可以开始编码了。
(1)首先导入ADO类型库。#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")。
环境中msado15.dll不一定在这个目录下,请按实际情况修改。或者把msado15.dll这个文件拷贝到你的工程目录下,直接#import "msado15.dll" \ no_namespace \rename ("EOF", "adoEOF")包含进来。
(2 )创建Connection对象并连接数据库
{
CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));
try
{
//设置连接时间
m_pConnection->ConnectionTimeout = 5;
//打开数据库连接
HRESULT hr = m_pConnection->Open("DSN=MySqlODBC;server=localhost;database=test","root","root",adModeUnknown);
}
catch(_com_error &e) {
MessageBox(NULL, e.Description(), _T(""), MB_OK); return FALSE;
}
return TRUE;
}
(3)执行SQL语句
BOOL CDBManagerSub::ExecuteSQL( _bstr_t bstrSQL )
{ // _variant_t RecordsAffected;
try
{
// 是否已经连接数据库
if(m_pConnection == NULL)
{ //重新连接数据库 Open(m_dbType, m_strServer, m_strUserName, m_strPasswor, m_strDBName);
} // Connection对象的Execute方法:(_bstr_t CommandText, // VARIANT * RecordsAffected, long Options )
// 其中CommandText是命令字串,通常是SQL命令。
// 参数RecordsAffected是操作完成后所影响的行数,
// 参数Options表示CommandText的类型:adCmdText-文本命令;adCmdTable-表名 // adCmdProc-存储过程;adCmdUnknown-未知
_RecordsetPtr hr = m_pConnection->Execute(bstrSQL,NULL,adCmdText); return true;
}
catch(_com_error e)
{
MessageBox(NULL, e.Description(), _T(""), MB_OK); return false;
}
}
_bstr_t bstrSQL为输入的SQL语句,如果返回TRUE,则执行成功,返回FLASH则会报对应的错误提示。
展开全部
那么你要先检查 是否存在c\:Program Files\Common Files\System\ADO\msado15.dll"
很明显,你打错了路径
是
c:\
不是
c\:
别忘了采纳,亲!
很明显,你打错了路径
是
c:\
不是
c\:
别忘了采纳,亲!
追问
额,是有msado15.dll的,路径是这里错了,我程序里是没有错的。我是在控制台程序中import的,是这个问题么?
追答
跟控制台程序无关, 在仔细检查一下路径吧.
或者复制我的
"c:\Program Files\Common Files\System\ADO\msado15.dll"
在有个挺讨厌的问题是,,确认你用的账号是否可以访问 这个路径, 一般这个问题出现在win7系统
解决方案,右键 以管理员身份运行
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询