C++连接数据库的问题。

2024-12-16 18:51:55
推荐回答(3个)
回答1:

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则会报对应的错误提示。

回答2:

那么你要先检查 是否存在c\:Program Files\Common Files\System\ADO\msado15.dll"
很明显,你打错了路径

c:\
不是
c\:

别忘了采纳,亲!

回答3:

  1. 网上有很多

  2. 我帮你找了个百度经验

  3. http://jingyan.baidu.com/article/76a7e409845814fc3a6e1577.html