VC++通過API串連MySQL,vcapi串連mysql

來源:互聯網
上載者:User

VC++通過API串連MySQL,vcapi串連mysql

1、  首先安裝MySQL資料庫伺服器,本文安裝的是mysql-installer-community-5.6.10.1.msi這個版本,至於各個版本有什麼不同,不在這裡說明。

如下的預設安裝的安裝目錄結構:


2、 接著配置環境變數,這個純粹是要為了在命令列下使用mysql的相關命令更加方便。如

如下設定即可,有些安裝包已經自動給添加上了這個路徑,只需要檢查一下即可。

 

3、 先在命令列下建立一個資料samp_db,並在建立表students。建庫和建表都相對簡單,如下是已經建好的。

建立資料庫命令如下:

>createdatabase samp_db character set gbk;

使用資料庫samp_db

>usesamp_db;

建立資料表

>createtable students

           id int unsigned not null auto_increment primary key,

           name char(8) not null,

           sex char(4) not null,

           age tinyint unsigned not null,

           tel char(13) null default "-",

           address char(60),

           modifyDateTime char(30)

);

 

 

4、  設定伺服器允許網路訪問,即將一個host設定為萬用字元%,即可允許網路上的主機訪問這個伺服器。

>use mysql;

>select 'host' from user whereuser='root';
>update user set host = '%' where user ='root';
>flush privileges;

 

 

 

5、 使用MySQL API訪問資料庫,即分為初始化,串連,設定,操作。

添加標頭檔

#include "mysql.h"

在程式依賴附加項中添加庫。

libmysql.lib

具體實現代碼如下:

 

void CTestMysqlUseAPIDlg::OnBnClickedOk(){    //TODO: 在此添加控制項通知處理常式代碼    MYSQL*con;    MYSQL_RES*res;    MYSQL_ROWrow;     //資料庫配置     chartmp[400];    chardbuser[30] = "root";          //資料庫使用者名稱    chardbpasswd[30] = "";            //密碼    chardbip[30] = "192.168.1.101";   //資料庫伺服器IP地址    intnport = 3306;               //資料庫伺服器連接埠號碼    chardbname[30] = "samp_db";       //資料庫名    chartablename[30] = "students";   //表名    char*query = NULL;     unsignedint t;    intcount = 0;    intrt;//return value       //1、將初始化MYSQL對象    con= mysql_init((MYSQL*)0);     //2、串連資料庫 相當在在window命令列下執行 mysql -h 192.168.1.101 -u root    if(con != NULL&&       mysql_real_connect(con,dbip,dbuser,dbpasswd,dbname,nport,NULL,0))    {       //3、選擇資料庫相當於執行mysql>use samp_db       if(!mysql_select_db(con,dbname))       {           con->reconnect = 1;            //3、用於設定字元集的,主要針對儲存到資料庫中的中文           query= "set names \'GBK\'";           rt=mysql_real_query(con,query,strlen(query));           if(rt)           {              printf("Error making query: %s!!!\n",mysql_error(con));           }            //4、設定返回字元集,這是必須要設定的,不然返回的是其它的字元集,顯示時全是亂碼。           query= "SET CHARACTER_SET_RESULTS=\'UTF8\'";           rt=mysql_real_query(con,query,strlen(query));           if(rt)           {              printf("Error making query: %s!!!\n",mysql_error(con));           }       }    }    else    {       MessageBoxA(NULL,"串連資料庫失敗,請檢查配置!","",NULL);       return;    }      //insert操作    chartimeBuff[32] = {0};    charbuff[256] = {0};    SYSTEMTIMEst;    GetLocalTime(&st);    sprintf(timeBuff,"%04d-%02d-%02d%02d:%02d:%02d",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);    sprintf(buff,"insert intostudentsvalues(NULL,\"%s\",\"%s\",%d,\"%s\",\"%s\",\"%s\");","牛小北","女",28,"135321432","長沙市",timeBuff);    rt= mysql_real_query(con,buff,strlen(buff));    if(rt)    {       CStringsError;       sError.Format(L"%s",mysql_error(con));       charbuff[128] = {0};       WideCharToMultiByte(CP_ACP,0,sError,-1,buff,127,NULL,FALSE);       MessageBox(L"inserterror.!" + sError,L"",NULL);       return;    }      //select操作    sprintf(tmp,"select *from %s where id>260;",tablename);    rt= mysql_real_query(con,tmp,strlen(tmp));    if(rt)    {       MessageBoxA(NULL,"selecterror.!","",NULL);       return;    }     //對結果集做處理    res= mysql_store_result(con);    CStringstr;    while(row = mysql_fetch_row(res))    {          for(t = 0;t< mysql_num_fields(res); t++)       {           wchar_tTmpBuf[128] = {0};           MultiByteToWideChar(CP_UTF8,0,row[t],-1,TmpBuf,127);           charbuff[127];           WideCharToMultiByte(CP_ACP,0,TmpBuf,-1,buff,127,NULL,FALSE);           str+= L""+CString(buff);       }       str+= L"\r\n";    }    //將結果集寫到EDIT中    GetDlgItem(IDC_EDIT1)->SetWindowText(str);     //釋放結果集    mysql_free_result(res);    //關閉串連    mysql_close(con);     return;}


 

這是一個簡單的結果介面。


 

MySQL API比較多,還需要學習更多。

這個文檔的連結如下:

http://download.csdn.net/detail/cabmail/8852297

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.