MySQL系列教程之使用C語(yǔ)言來(lái)連接數(shù)據(jù)庫(kù)
寫(xiě)在前面
知道了 Java中使用 JDBC編程 來(lái)連接數(shù)據(jù)庫(kù)了,但是使用 C語(yǔ)言 來(lái)連接數(shù)據(jù)庫(kù)卻總是連接不上去~
立即安排一波使用 C語(yǔ)言連接 MySQL數(shù)據(jù)庫(kù)的教程~
一、準(zhǔn)備工作
1.1 把 libmysql.dll 和 libmysql.lib 文件復(fù)制到工程目錄下
首先,我們要找到剛剛開(kāi)始下載的 MySQL數(shù)據(jù)庫(kù) 的安裝目錄,打開(kāi)目錄,并且將 libmysql.dll文件 和 libmysql.lib文件 復(fù)制到工程目錄下~
我安裝MySQL的路徑:C:\Program Files\MySQL\MySQL Server 5.7\lib


1.2 添加 libmysql.lib



1.3 添加 include目錄
我的這個(gè)路徑是:C:\Program Files\MySQL\MySQL Server 5.7\include

來(lái)到 VS2019 頁(yè)面,和上述操作一樣~
右鍵MySQL工程,選擇屬性 右鍵,選擇 C/C++,選擇常規(guī),選擇 附加包含目錄,同時(shí)進(jìn)行編輯,將剛剛復(fù)制的 include路徑 給粘貼上去~



1.4 包含頭文件
接下來(lái) 在VS2019里面,先后敲出代碼:
#include <WinSock.h> 和 #include <mysql.h> ,需要注意的是,兩行代碼的順序不可以改變~

1.5 其他準(zhǔn)備工作
1.5.1 代碼準(zhǔn)備
#include <iostream>
using namespace std;
#include <WinSock.h>
#include <mysql.h>
void test();
int main()
{
cout << "main" << endl;
test();
getchar();
return 0;
}
void test()
{
printf("test\n");
MYSQL m; //mysql連接
MYSQL_RES* res; //查詢結(jié)果集
MYSQL_ROW row; //二維數(shù)組,存放數(shù)據(jù)
//初始化數(shù)據(jù)庫(kù)
mysql_init(&m);
//設(shè)置編碼方式
mysql_options(&m, MYSQL_SET_CHARSET_NAME, "gbk");
//連接數(shù)據(jù)庫(kù)
if (mysql_real_connect(&m, "localhost", "root", "111111", "c", 3306, NULL, 0))
{ //主機(jī) 用戶名 密碼 數(shù)據(jù)庫(kù)名 端口
printf("數(shù)據(jù)庫(kù)連接成功\n");
}
else {
printf("數(shù)據(jù)庫(kù)連接失敗:%s \n", mysql_error(&m));
//輸出錯(cuò)誤信息
}
}1.5.2 創(chuàng)建數(shù)據(jù)庫(kù)連接
第一步,Win+R,輸入 cmd~

第二步,輸入 musql -uroot -p,回車(chē)后,輸入一開(kāi)始安裝MySQL數(shù)據(jù)庫(kù)是設(shè)置的密碼,之后回車(chē)進(jìn)入數(shù)據(jù)庫(kù)~

第三步,開(kāi)始創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù),并且開(kāi)始建表之類的操作~


1.6 選擇相應(yīng)方案配置 Release,解決方案平臺(tái) x64

最終,來(lái)運(yùn)行一下代碼,發(fā)現(xiàn)已經(jīng)成功了~

二、代碼測(cè)試案例
在經(jīng)過(guò)上述的一系列操作之后,已經(jīng)可以連接上 MySQL數(shù)據(jù)庫(kù)中了~
接下來(lái)我們就可以來(lái)做一些測(cè)試案例~
2.1 向數(shù)據(jù)庫(kù)插入數(shù)據(jù)
此時(shí),再插入數(shù)據(jù)之前,我們可以來(lái)看一看 上面新建的 student表 是沒(méi)有任何數(shù)據(jù)的~

但是,在加入 插入數(shù)據(jù)的代碼之后,運(yùn)行一下,我們就會(huì)發(fā)現(xiàn) 多出來(lái)一條數(shù)據(jù)~

當(dāng)然,改成插入多條數(shù)據(jù)也是可以的啦~

2.2 向數(shù)據(jù)庫(kù)刪除數(shù)據(jù)

2.3 修改數(shù)據(jù)
沒(méi)修改之前:

修改之后:

2.4 查詢數(shù)據(jù),打印出來(lái)

三、使用C語(yǔ)言連接MySQL數(shù)據(jù)庫(kù) 的測(cè)試案例代碼
/*
//向數(shù)據(jù)庫(kù)插入數(shù)據(jù)
const char* sql = "insert into student values(2,'李四','女'),(3,'王五','男'),"
"(4, '趙六', '女')";
if (mysql_query(&m, sql))
{
printf("插入數(shù)據(jù)失?。?s \n", mysql_error(&m));
}
else
{
printf("插入數(shù)據(jù)成功\n");
}
//向數(shù)據(jù)庫(kù)刪除數(shù)據(jù)
const char* sql_2 = "delete from student where name = '趙六'";
if (mysql_query(&m, sql_2))
{
printf("刪除數(shù)據(jù)失?。?s \n", mysql_error(&m));
}
else
{
printf("刪除數(shù)據(jù)成功\n");
}
//向數(shù)據(jù)庫(kù)修改數(shù)據(jù)
const char* sql_3 = "update student set id = 5 where name = '李四'";
if (mysql_query(&m, sql_3))
{
printf("修改數(shù)據(jù)失敗:%s \n", mysql_error(&m));
}
else
{
printf("修改數(shù)據(jù)成功\n");
}
*/
//需要注意的是,在下面的設(shè)置中,所查詢到的數(shù)據(jù) 與打印出來(lái)的數(shù)據(jù)要相互匹配,
//不然就會(huì)出現(xiàn)亂碼的
//查詢數(shù)據(jù)
const char* sql_4 = "select id,sex,name from student where name = '張三'";
if (mysql_query(&m, sql_4))
{
printf("未查到記錄:%s \n", mysql_error(&m));
}
else
{
printf("查詢成功 \n");
}
//獲取查詢結(jié)果集
res = mysql_store_result(&m);
if (res)
{
printf("獲取到數(shù)據(jù)\n");
}
else
{
printf("未獲取到數(shù)據(jù):%s \n", mysql_error(&m));
}
//打印獲取到的數(shù)據(jù)
printf("id\tname\tsex\n");
while (row = mysql_fetch_row(res))
{
printf("%s\t%s\t%s\n", row[0], row[1], row[2]);
}
//釋放資源
mysql_free_result(res);//釋放結(jié)果集
mysql_close(&m);//關(guān)閉數(shù)據(jù)庫(kù)
}使用 C語(yǔ)言 連接 MySQL數(shù)據(jù)庫(kù),正好可以和 Java 連接 MySQL數(shù)據(jù)庫(kù) 相互映襯~
總結(jié)
到此這篇關(guān)于MySQL系列教程之使用C語(yǔ)言來(lái)連接數(shù)據(jù)庫(kù)的文章就介紹到這了,更多相關(guān)C語(yǔ)言連接MySQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言模擬實(shí)現(xiàn)動(dòng)態(tài)通訊錄
本文主要介紹了C語(yǔ)言模擬實(shí)現(xiàn)動(dòng)態(tài)通訊錄,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
C++寫(xiě)注冊(cè)表項(xiàng)實(shí)例
這篇文章主要介紹了C++寫(xiě)注冊(cè)表項(xiàng)實(shí)例,可實(shí)現(xiàn)開(kāi)機(jī)啟動(dòng)的功能,是進(jìn)行Windows桌面應(yīng)用程序開(kāi)發(fā)中非常重要的技巧,需要的朋友可以參考下2014-10-10
C++數(shù)據(jù)精度問(wèn)題(對(duì)浮點(diǎn)數(shù)保存指定位小數(shù))
這篇文章主要介紹了對(duì)浮點(diǎn)數(shù)保存指定位小數(shù)。比如, 1.123456. 要保存1位小數(shù),,調(diào)用方法后, 保存的結(jié)果為: 1.1。 再比如,1.98765, 保存2位小數(shù)的結(jié)果為: 2.00,需要的朋友可以參考下2017-08-08
C++實(shí)現(xiàn)LeetCode(24.成對(duì)交換節(jié)點(diǎn))
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(24.成對(duì)交換節(jié)點(diǎn)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++簡(jiǎn)單又輕松的講解類和對(duì)象中友元函數(shù)
采用類的機(jī)制后實(shí)現(xiàn)了數(shù)據(jù)的隱藏與封裝,類的數(shù)據(jù)成員一般定義為私有成員,成員函數(shù)一般定義為公有的,依此提供類與外界間的通信接口。但是,有時(shí)需要定義一些函數(shù),這些函數(shù)不是類的一部分,但又需要頻繁地訪問(wèn)類的數(shù)據(jù)成員,這時(shí)可以將這些函數(shù)定義為該類的友元函數(shù)2022-06-06
C/C++中for語(yǔ)句循環(huán)用法以及練習(xí)舉例
for語(yǔ)句是一種循環(huán)語(yǔ)句,它是對(duì)while語(yǔ)句的推廣,下面這篇文章主要給大家介紹了關(guān)于C/C++中for語(yǔ)句循環(huán)用法以及練習(xí)舉例的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
C語(yǔ)言實(shí)現(xiàn)掃雷OvO(完整代碼)
相信大家都玩過(guò)掃雷游戲,因?yàn)樗?jīng)典了,今天我們用C語(yǔ)言來(lái)模擬實(shí)現(xiàn)掃雷游戲,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2022-04-04

