1、ODBC方式
首先下载mysql-connector-odbc-5.1.7-win32.msi安装mysql的odbc驱动。
配置odbc数据源:在xp中,开始-控制面板-性能和维护-管理工具-数据源(odbc)。
在系统DSN选项卡下单击添加按钮,选择mysql odbc 5.1 driver。设置名称为mysql,数据库为test,用户名为root,密码为空。server为127.0.0.1,port为3306.点击test按钮,提示成功即可。
进行ODBC数据库开发,需要引入afxdb.h文件
#include <afxdb.h>
void CConnectSqlServerDlg::OnButton1() {CDatabase m_db;CRecordset RS;try{m_db.OpenEx("DSN=mysql;UID=root;PWD=",CDatabase::noOdbcDialog);RS.m_pDatabase = &m_db;//快照(Snapshot) 和动态集(Dynaset)两种,CRecordset类对这两者都支持。//这两种记录集的不同表现在它们对别的应用改变数据源记录采取了不同的处理方法。RS.Open(CRecordset::snapshot,"select count(*) from t_customer");while(!RS.IsEOF()){CString str;RS.GetFieldValue((short)0,str);AfxMessageBox(str);
RS.MoveNext(); //记录集向下滚动,到下一条数据。}//CString sql="insert into ...";//m_db.ExecuteSQL(sql); RS.Close();}catch (CException* e){RS.Close();TCHAR szerror[1000];e->GetErrorMessage(szerror,1000);AfxMessageBox(szerror);} }
2、通过MySQL自己的API函数进行连接
使用API的方式连接,需要加载mysql的头文件和lib文件。
在VC++6.0中要想把做一下两步准备工作才可以。
(1)Tools->Options->Directories->Include files中添加C:\Program Files\MySQL\MySQL Server 5.5\include
(2)把C:\Program Files\MySQL\MySQL Server 5.5\liblibmysql.lib文件拷贝到C:\Program Files\Microsoft Visual Studio\VC98\Lib目录下。
然后在头文件里包含以下内容:
#include <winsock.h>
#include <iostream>
#include <string>
#include <mysql.h>
using namespace std;
#pragma comment(lib,"libmysql.lib")
void CConnectSqlServerDlg::OnButton2() {// TODO: Add your control notification handler code here MYSQL m_sqlCon;string sqlstr;MYSQL_RES *result = NULL;try { mysql_init(&m_sqlCon); // localhost:服务器 root为账号密码 test为数据库名 3306为端口 if(!mysql_real_connect(&m_sqlCon, "localhost","root","","test",3306,NULL,0)) { AfxMessageBox(_T("数据库连接失败!")); //return FALSE; }else{//AfxMessageBox(_T("数据库连接成功!")); sqlstr = "select count(*) FROM t_customer";if (0 == mysql_query(&m_sqlCon, sqlstr.c_str())) {result = mysql_store_result(&m_sqlCon);MYSQL_ROW row = NULL;row = mysql_fetch_row(result);while (NULL != row) {CString str = row[0];AfxMessageBox(str);row = mysql_fetch_row(result);}}}//return TRUE; } catch (CException* e) { mysql_close(&m_sqlCon); TCHAR szerror[1000];e->GetErrorMessage(szerror,1000);AfxMessageBox(szerror);} mysql_free_result(result);mysql_close(&m_sqlCon);mysql_server_end(); }