现在的位置: 首页 > 综合 > 正文

VC 访问mysql数据库

2013年09月21日 ⁄ 综合 ⁄ 共 6166字 ⁄ 字号 评论关闭

建立数据源: 

      开始菜单->设置->控制面板->管理工具->数据源(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方式相同

  

抱歉!评论已关闭.