日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

VC的MySQL编程

發布時間:2023/12/10 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VC的MySQL编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、在你的程序中使用數據庫是不錯的注意。如果已經有可用的MySQL服務器,在VC中可以按照如下方法實現與數據庫的連接。
1、找來MySQL(Win32)安裝目錄下的include文件夾,將其添加到VC頭文件目錄列表中;
(VC6 -> Options ->?Directories -> 加入此目錄)
(VC2005 ->?工具 ->?選擇 ->項目和解決方案 -> VC++目錄 ->?顯示以下內容的目錄 ->?包含文件 -> 加入此目錄)2、找來MySQL(Win32)安裝目錄下的lib文件夾,將?其添加到VC庫文件目錄列表中;
(VC6 -> Options ->?Directories -> 加入此目錄)
(VC2005 ->?工具 ->選擇 ->?項目和解決方案 -> VC++目錄 ->?顯示以下內容的目錄 ->?庫文件 -> 加入此目錄,注意是lib/debug或lib/opt)
3、新建一個工程,參考如下代碼:
// mysql.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include <stdio.h>
#include <winsock.h>
#include <mysql.h>
#include <windows.h>
#pragma comment(lib, "libmysql.lib")
int main(int argc, char* argv[])
{
??? unsigned short Port = 3306;
??? char *IPAddress = "192.168.31.56";
??? char *UserName = "root";
??? char *Password = "";
??? char *DBName = "SAS_1_2_0";
??? printf("Start... ");
?
??? MYSQL *ssock;
??? //char execsql[500];
??? ssock = (MYSQL *)malloc(sizeof(MYSQL));???
??? //在某些版本中,不需要該初始化工作,可觀看mysql.H以及readme
??? mysql_init(ssock);
??? if(ssock == NULL)
??? {
??????? printf("EROR: MySQL ssock init error. ");
??????? return FALSE;
??? }

??? //連接到指定的數據庫
??? ssock = mysql_real_connect(ssock, IPAddress, UserName, Password, NULL, Port, NULL, 0);
??? if(!ssock)
??? {
??????? printf("conn fail... ");
??????? //memcpy(eee, mysql_error(ssock), 20);
??????? //fprintf(stderr, "Failed to connect to database: Error: %s ", mysql_error(ssock));
???????
??????? //printf("%c ", eee);
??????? unsigned int mtint = mysql_errno(ssock);
??????? //printf("%d ");
??????? return FALSE;
??? }
??? if(mysql_select_db(ssock, DBName) != 0)
??? {
??????? printf("select db error. ");
??????? return FALSE;
??? }
??? printf("version=%d ", mysql_get_server_version(ssock));
??? //exec my execsql string
??? //sprintf(execsql,"create table girls (name char(10),age int)");
??? //mysql_real_query(ssock,execsql,strlen(execsql));
??? mysql_close(ssock);
??? printf("End... ");
??? return TRUE;
}?

、怎樣用c/c++編程連接mysql數據庫
???? 執行一個查詢有以下幾個步驟要做。首先執行一個查詢,然后保存結果,??
?? ? 得到的是一個子集。這里是一個小例子:??
? #include???<stdio.h>??
? #include????
? #include?? <mysql.h>
? MYSQL?? mysql;??
? MYSQL_RES?? *res;??
? MYSQL_ROW?? row;??
? void?? exiterr(int?? exitcode)??
? {??
?????? fprintf(?? stderr,?? "%s/n",?? mysql_error(&mysql)?? );??
????? ?exit(?? exitcode?? );??
? }??
? int?? main()??
? {??
??????? uint?? i?? =?? 0;??
??????? if?? (!(mysql_connect(&mysql,"host","username","password")))????
???????????????? exiterr(1);???
??????? if?? (mysql_select_db(&mysql,"payroll"))??
???????????? ?exiterr(2);???
??????? if?? (mysql_query(&mysql,"SELECT?? name,rate?? FROM?? emp_master"))??
???????????? ?exiterr(3);??
?????? ?if?? (!(res?? =?? mysql_store_result(&mysql)))??
???????????? ?exiterr(4);???
????????while((row?? =?? mysql_fetch_row(res)))?? {??
???????????? for?? (i=0?? ;?? i?? <?? mysql_num_fields(res);?? i++)????
????????????????? printf("%s/n",row[i]);???
????????}??
??????? mysql_free_result(res);??
?????? ?mysql_close(&mysql);??
?? }??
?????? ?mysql_query?? 函數將把查詢送給服務器,如果查詢成功,調用mysql_store_result 函數將分配一個MYSQL_RES?? 結構并且重新從服務器獲得一個結果集。
?????? 你可以用mysql_fetch_row?? 函數來查看數據。這樣做你將獲得一個?? MYSQL_ROW?? 指針指向數據中的一行。?? MYSQL_ROW?? 指針是一簡單的字符串數組。所有的數據類型被轉換成字符串送到客戶端。??
????? ? mysql_num_fields函數將告訴你返回的列數。你可以繼續調用mysql_fetch_row直到它返回一個空指針以得到查詢中的每一行。??
??????? 注意在這個例子里,我們沒有檢查有空指針的列。如果你不使用非空列的表,那么你必須檢查一個特殊行的列是否為空。一旦你使用完畢一個結果集,你必須釋放它。這通過?? mysql_free_result?? 來完成。??
?????? 最后調用mysql_close來關閉你和數據庫之間的連接。??
?????? 查看結果集你可以不用調用mysql_fetch_row就查出返回的結果集共有多少行。這由
????? int?? mysql_num_rows(MYSQL_RES?? *result)來完成。??
?????? 改變到被下一個?? mysql_fetch_row?? 調用返回的行,你可以用void?? mysql_data_seek(MYSQL_RES?? *res,?? uint?? offset)?? 改變到任意一行。? 獲得更多的信息 你可以使用這幾個額外的函數來找出關于一個查詢的更多的信息,并從服務器獲得這些信息。??
??????? 如果你執行一個UPDATE,?? INSERT?? 或者?? DELETE?? 查詢,你可以用int?? mysql_affected_rows?? 來查出共有多少行數據被你影響到。??
????? ?如果在你的數據庫里有二進制數據,那么得知數據的長度將是有用的。unsigned??int?? *mysql_fetch_lengths(MYSQL_RES?? *mysql)?? 將返回一指出了結果集中每一列 的長度的整型數組。??
??? ? 當你插入一個帶有?? AUTO_INCREMENT?? 列的表的時候,你可以用int?? mysql_insert_id(MYSQL?? *mysql)?? 來查出生成的那一行的ID。??
======================

int main()
{
?? ?MYSQL mysql;
??? MYSQL_RES * res ;
??? MYSQL_FIELD * fd ;
??? MYSQL_ROW row ;
?? ?int id[10000];
??? double result[10000][8];
?? ?vector<string> v;

??? if(mysql_init(&mysql) == NULL)
??? {
?? ??std::cout<<"init mysql data status fail"<<std::endl;
???? ??return false;
? ?}?
?else
?{
??std::cout<<"init mysql data status success"<<std::endl;
?}
?
?if(NULL == mysql_real_connect(&mysql,"localhost","root","","wsnss",MYSQL_PORT,NULL,0))
?{
??std::cout<<"connect database fail"<<std::endl<<mysql_error(&mysql)<<std::endl;;
??return false;
?}
?else{
??std::cout<<"connect database success"<<std::endl;
?}

?char?? szSqlText[500]="";
?int j = 0;

?sprintf(szSqlText,"%s","select * from data_receive ");
?if (mysql_query( &mysql, szSqlText))
?//進行數據檢索
?{
???? //執行SQL語句出錯
??cout<<"query error"<<endl;
??mysql_close( &mysql ) ;
??return FALSE ;
?}
??? else
??? {
??res = mysql_store_result( &mysql ) ;
??int i; ??
??while((row?? =?? mysql_fetch_row(res)))?? {?
???id[j] = atoi(row[0]);
??? for?? (i = 1; i < mysql_num_fields(res); i++)??
??? {
???? result[j][i-1] =? atof(row[i]);
??? }
??? j++;
??}
??? }??
??
??
?for(int i = 0 ; i < 10000; i++)
?{
??if(i>=j)
???break;
??char str[10000];
??stringstream ss;

??????? ss<<"insert into data_receive(ID,data1,data2,data3,?data4,data5,data6,data7,data8)values('"<<id[i]<<"','"<<
???result[i][0]<<"','"<<result[i][1]<<"','"<<result[i][2]<<"','"<<
???result[i][3]<<"','"<<result[i][4]<<"','"<<result[i][5]<<"','"<<
???result[i][6]<<"','"<<result[i][7]<<"');";
??string s = ss.str();
??v.push_back(s);??
?}
?for(vector<string>::iterator iter = v.begin();? iter != v.end(); ++iter)
?{
??
??if(mysql_query(&mysql,(*iter).c_str())!=0)
??{
???std::cout<<"execute insert syntax fail"<<
?????std::endl<<mysql_error(&mysql)<<endl;
???mysql_close(&mysql);
???return 1;
??}
?}
??? mysql_free_result(res);
??? mysql_close(&mysql);
??? return 0;
}

總結

以上是生活随笔為你收集整理的VC的MySQL编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。