1. C++連接MySQL數(shù)據(jù)庫(kù)
首先在VS里新建C++工程項(xiàng)目,右鍵工程項(xiàng)目名c 連接sql數(shù)據(jù)庫(kù),選擇屬性。
選擇平臺(tái)選擇
選擇配置管理器
選擇新建
下拉菜單中選擇X64 .確定
選擇C/C++ -> 常規(guī) -> 附加包含目錄 ,添加C:\ Files\MySQL\MySQL 5.5\(根據(jù)自己的安裝目錄選擇)
選擇連接器 -> 常規(guī) -> 附加庫(kù)目錄 。 添加C:\ Files\MySQL\MySQL 5.5\lib;(根據(jù)自己的安裝目錄選擇)
選擇連接器 -> 輸入 -> 附加依賴項(xiàng) 。 添加C:\ Files\MySQL\MySQL 5.5\lib\.lib;(根據(jù)自己的安裝目錄選擇)
最后將動(dòng)態(tài)鏈接庫(kù).dll復(fù)制到工程的X64生成目錄下。該動(dòng)態(tài)連接庫(kù)文件在C:\ Files\MySQL\MySQL 5.5\lib\目錄下
2. MySQL常用API函數(shù)
() 返回被最新的, 或查詢影響的行數(shù)。
() 關(guān)閉一個(gè)服務(wù)器連接。
() 連接一個(gè)MySQL服務(wù)器。該函數(shù)不推薦;使用()代替。
() 改變?cè)谝粋€(gè)打開的連接上的用戶和數(shù)據(jù)庫(kù)。
() 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。該函數(shù)不推薦;而使用SQL命令 。
() 在一個(gè)查詢結(jié)果集合中搜尋一任意行。
() 用給定字符串做一個(gè)。
() 拋棄一個(gè)數(shù)據(jù)庫(kù)。該函數(shù)不推薦;而使用SQL命令DROP 。
o() 讓服務(wù)器將調(diào)試信息寫入日志文件。
() 確定是否已經(jīng)讀到一個(gè)結(jié)果集合的最后一行。這功能被反對(duì); ()或()可以相反被使用。
() 返回最近被調(diào)用的MySQL函數(shù)的出錯(cuò)編號(hào)。
() 返回最近被調(diào)用的MySQL函數(shù)的出錯(cuò)消息。
() 用在SQL語句中的字符串的轉(zhuǎn)義特殊字符。
() 返回下一個(gè)表字段的類型。
rect () 返回一個(gè)表字段的類型,給出一個(gè)字段編號(hào)。
() 返回一個(gè)所有字段結(jié)構(gòu)的數(shù)組。
() 返回當(dāng)前行中所有列的長(zhǎng)度。
() 從結(jié)果集合中取得下一行。
() 把列光標(biāo)放在一個(gè)指定的列上。
() 返回最近查詢的結(jié)果列的數(shù)量。
() 返回用于最后一個(gè)()的字段光標(biāo)的位置。
() 釋放一個(gè)結(jié)果集合使用的內(nèi)存。
o() 返回客戶版本信息。
() 返回一個(gè)描述連接的字符串。
() 返回連接使用的協(xié)議版本。
o() 返回服務(wù)器版本號(hào)。
() 返回關(guān)于最近執(zhí)行得查詢的信息。
() 獲得或初始化一個(gè)MYSQL結(jié)構(gòu)。
() 返回有前一個(gè)查詢?yōu)橐粋€(gè)列生成的ID。
() 殺死一個(gè)給定的線程。
() 返回匹配一個(gè)簡(jiǎn)單的正則表達(dá)式的數(shù)據(jù)庫(kù)名。
() 返回匹配一個(gè)簡(jiǎn)單的正則表達(dá)式的列名。
() 返回當(dāng)前服務(wù)器線程的一張表。
() 返回匹配一個(gè)簡(jiǎn)單的正則表達(dá)式的表名。
() 返回一個(gè)結(jié)果集合重的列的數(shù)量。
() 返回一個(gè)結(jié)果集合中的行的數(shù)量。
() 設(shè)置對(duì)()的連接選項(xiàng)。
() 檢查對(duì)服務(wù)器的連接是否正在工作c 連接sql數(shù)據(jù)庫(kù),必要時(shí)重新連接。
() 執(zhí)行指定為一個(gè)空結(jié)尾的字符串的SQL查詢。
() 連接一個(gè)MySQL服務(wù)器。
() 執(zhí)行指定為帶計(jì)數(shù)的字符串的SQL查詢。
() 告訴服務(wù)器重裝授權(quán)表。
() 搜索在結(jié)果集合中的行,使用從()返回的值。
() 返回行光標(biāo)位置。
() 連接一個(gè)數(shù)據(jù)庫(kù)。
() 關(guān)掉數(shù)據(jù)庫(kù)服務(wù)器。
() 返回作為字符串的服務(wù)器狀態(tài)。
() 檢索一個(gè)完整的結(jié)果集合給客戶。
() 返回當(dāng)前線程的ID。
() 初始化一個(gè)一行一行地結(jié)果集合的檢索。
3. C++使用MySQL數(shù)據(jù)庫(kù)
示例程序,自己消化,包含的API不懂就
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include<mysql.h>
using namespace std;
#pragma comment(lib,"libmysql.lib")
#pragma comment(lib,"wsock32.lib")
MYSQL *mysql = new MYSQL; //mysql連接
MYSQL_FIELD *fd; //字段列數(shù)組
char field[32][32]; //存字段名二維數(shù)組
MYSQL_RES *res; //這個(gè)結(jié)構(gòu)代表返回行的一個(gè)查詢結(jié)果集
MYSQL_ROW column; //一個(gè)行數(shù)據(jù)的類型安全(type-safe)的表示,表示數(shù)據(jù)行的列
char query[150]; //查詢語句
bool ConnectDatabase();
bool QueryDatabase1();
//bool QueryDatabase2();
int main()
{
ConnectDatabase();
QueryDatabase1();
//QueryDatabase2();
system("pause");
return 0;
}
bool ConnectDatabase()
{
//初始化mysql
mysql_init(mysql);
//返回false則連接失敗,返回true則連接成功
if (!(mysql_real_connect(mysql, "localhost", "root", "123456", "company", 0, NULL, 0))) //中間分別是主機(jī),用戶名,密碼,數(shù)據(jù)庫(kù)名,端口號(hào)(可以寫默認(rèn)0或者3306等),可以先寫成參數(shù)再傳進(jìn)去
{
printf("Error connecting to database:%s\n", mysql_error(mysql));
return false;
}
else
{
printf("Connected...\n");
return true;
}
return true;
}
bool QueryDatabase1()
{
sprintf_s(query, "select * from t_dept"); //執(zhí)行查詢語句,這里是查詢所有,user是表名,不用加引號(hào),用strcpy也可以
mysql_query(mysql, "set names gbk"); //設(shè)置編碼格式(SET NAMES GBK也行),否則cmd下中文亂碼
//返回0 查詢成功,返回1查詢失敗
if (mysql_query(mysql, query)) //執(zhí)行SQL語句
{
printf("Query failed (%s)\n", mysql_error(mysql));
return false;
}
else
{
printf("query success\n");
}
//獲取結(jié)果集
if (!(res = mysql_store_result(mysql))) //獲得sql語句結(jié)束后返回的結(jié)果集
{
printf("Couldn't get result from %s\n", mysql_error(mysql));
return false;
}
//打印數(shù)據(jù)行數(shù)
printf("number of dataline returned: %d\n", mysql_affected_rows(mysql));
//獲取字段的信息
char *str_field[32]; //定義一個(gè)字符串?dāng)?shù)組存儲(chǔ)字段信息
for (int i = 0; i<4; i++) //在已知字段數(shù)量的情況下獲取字段名
{
str_field[i] = mysql_fetch_field(res)->name;
}
for (int i = 0; i<4; i++) //打印字段
printf("s\t", str_field[i]);
printf("\n");
//打印獲取的數(shù)據(jù)
while (column = mysql_fetch_row(res)) //在已知字段數(shù)量情況下,獲取并打印下一行
{
printf("s\ts\ts\ts\n", column[0], column[1], column[2], column[3]); //column是列數(shù)組
}
return true;
}