建立数据源:

      开始菜单->设置->控制面板->管理工具->数据源(ODBC)->系统DSN->添加->选择MySQL ODBC 3.51 Driver(我下载的MyODBC版本是3.51)

      然后在出现的Connector/ODBC Configure Data Source Name对话框中输入

      Data Source Name---------ADOLinkMySQL    //数据源名称

      Server-------------------localhost      //数据库服务器名称

      User---------------------root           //用户名(MySQL默认的用户名是root)

      Password-----------------123456         //密码(由MySQL root用户管理)

      DataName-----------------adolinkmysql   //你刚才建立的数据库名称

   输入以后,点击Test。如果出现Success;connection was made!表示建立数据源成功,即可 继续下一步

      4,最后应用程序就可以通过ADO来访问MySQL了。注意在连接数据库中要用以下代码来连接

_ConnectionPtr m_pConnection;
         m_pConnection->Open("DSN=ADOLinkMySQL;",    /*数据源名称*/
                                       "root",           /*用户*/
                                      "123456",0);      /*密码*/

 

 

VC环境下使用mysql API函数访问MySQL数据库

 

1.       安装MySQL的完整版;(在安装过程中可以选择)

 

2.       将C:\Program Files\MySQL\MySQL Server 5.0\lib\opt目录下的“libmysql.lib”文件复制到创建的VC工程目录下;

 

3.       程序中包括头文件,连入库文件:

#include <winsock.h>
#include "C:\Program Files\MySQL\MySQL Server 5.0\include\mysql.h"(数据库的安装路径)
 
#pragma comment(lib,"libmysql.lib")

4.       程序例子

#include "stdafx.h"
#include <winsock.h>
#include "C:\Program Files\MySQL\MySQL Server 5.0\include\mysql.h" 
#pragma comment(lib,"libmysql.lib") 
int main(int argc, char* argv[])
{
        MYSQL mysql;
         MYSQL_RES *result;
         MYSQL_ROW row;
         mysql_init(&mysql); //初始化mysql结构
         if(!mysql_real_connect(&mysql,"MyXp","UserDB","123456","userdata",0,NULL,0))//连接服务器
         {
                   fprintf(stderr,"Failed to connect to database: Error: %s\n",
                            mysql_error(&mysql));
         }
//
/插入数据/        
if(mysql_query(&mysql,"insert into UserDataTable values('rm','209','209','2153@qq.com',
'23213','yjiang','26.222.171.2','2010-04-01 10:53:12')"))//进行查询
         {
              fprintf(stdout,"mysql_query() insert failed!\n");
         }     
         //
         ///  查询数据  ///                 
         if(mysql_query(&mysql,"select * from UserDataTable"))
         {
             fprintf(stdout,"mysql_query() select failed!\n");
         }
         result = mysql_store_result(&mysql);//读取一个到客户的查询的全部结果,
         //分配一个MYSQL_RES结构,并且把结果放进这个结构中。(获得结果集) 
         while (row = mysql_fetch_row(result))//取出结果集中记录
         {
fprintf(stdout,"UserName:%s password: %s Email:%s City:%s \n",row[0],row[1],row[3],row[5]);//输出这行记录
         } 
          mysql_free_result(result);   //释放结果集
           //
           //删除数据///    
           if(mysql_query(&mysql,"delete from UserDataTable where UserName = 'chz'"))
           {
            fprintf(stdout,"mysql_query() delete failed!\n");
           }  
      //
      /更新数据/
      if(mysql_query(&mysql,"update UserDataTable set PassWord = 'lyj0662',ConPass = 'lyj0662' where UserName = 'lyj'"))
           {
                      fprintf(stdout,"mysql_query() updata failed!\n");
           }  
          mysql_close(&mysql);//释放连接
         return 0;
}


VC ADO链接MySql数据库

ODBC方式链接。

1、应用程序的stdafx.h头文件中(也可以在其他合适的地方)包含如下语句。

#import "C:\\program files\\commonfiles\\system\\ado\\msado15.dll" no_namespacerename ("EOF","adoEOF")

2、链接数据库

CoInitialize(NULL);                                          //初始化Com组件
_ConnectionPtr conPtr;                                      //数据库链接指针
     //conPtr.CreateInstance("ADODB.Connection");           //Connection用于与数据库服务器的链接
     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式
     /******************连接数据库********************/
     try
     {
         conPtr->ConnectionTimeout = 5;                          //设置连接时间
         // MySqlTest为数据源名 localhost表示本地root表示用户名 sa表示密码
         //链接方式1,使用这种方式链接时要注意在设置数据源时一定要选择一个数据库
         //conPtr->Open("DSN=MySqlTest;server=localhost;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)
         //链接方式2采用这种方式链接时在创建数据源时没有必要选择一个数据库          conPtr->Open("DSN=MySqlTest;server=localhost;database=test;","root","sa",adModeUnknown);///连接MySql数据库(测试成功)
     }
     catch(_com_error e)                                              //捕捉异常
     {
         AfxMessageBox(e.ErrorMessage());
     } 
     CoUninitialize();                                       //释放com组件//不知是否有必要

    

3、访问数据库

_RecordsetPtr recordPtr;//数据集指针
recordPtr.CreateInstance(__uuidof(Recordset));
CString cmdStr=_T("selectname,stuno from student");//student为表名 该表中有两个字段name(字符型)stuno(int型)
     try
     {
              recordPtr->Open(_variant_t(cmdStr),
              conPtr.GetInterfacePtr(), 
              adOpenDynamic, 
              adLockOptimistic, 
              adCmdText); 
     }
     catch(_com_error e)
     {
         AfxMessageBox(e.Description());
     }
     while(!(recordPtr->adoEOF))
     {//获取记录
         CStringname=(CString)recordPtr->GetCollect(_variant_t("name")).bstrVal;
         intno=recordPtr->GetCollect(_variant_t("stuno")).intVal;
         recordPtr->MoveNext();
     }
     recordPtr->Close();//关闭记录集
     recordPtr.Release();//释放空间
     conPtr->Close();//关闭连接
     conPtr.Release();//释放空间

 

非ODBC方式链接。

 

链接数据库

CoInitialize(NULL);                                          //初始化Com组件
_ConnectionPtr conPtr;                                       //数据库链接指针
     //conPtr.CreateInstance("ADODB.Connection");            //Connection用于与数据库服务器的链接
     conPtr.CreateInstance(__uuidof(Connection));            //Connection用于与数据库服务器的链接另一种方式
// MySQL ODBC 5.1 Driver为驱动名称(取决于我们为MySql安装的驱动),localhost为服务器地址,test为数据库名,root为用户名(MySql默认用户名为root),sa为密码
     CStringconStr=_T("Driver={MySQL ODBC 5.1 Driver };Server= localhost;Database=test;");
     /******************连接数据库********************/
     try
     {
         conPtr->ConnectionTimeout = 5;                          //设置连接时间
         conPtr->Open((_bstr_t)conStr, _T("root"),_T("sa"), adModeUnknown);
     }
     catch(_com_error e)                                              //捕捉异常
     {
         AfxMessageBox(e.ErrorMessage());
     } 
     CoUninitialize();                                       //释放com组件

获取记录集

获取记录集的方式与ODBC方式相同