国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

c++ 連接mysql數(shù)據(jù)庫

這篇具有很好參考價(jià)值的文章主要介紹了c++ 連接mysql數(shù)據(jù)庫。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??????? 使用vs2019對window11中的數(shù)據(jù)庫進(jìn)行連接

1. 配置連接環(huán)境

??????? 首先需要把mysql中的頭文件和庫文件放入到c++項(xiàng)目工程中

1.打開安裝MySQL的目錄,在windows系統(tǒng)中如果是默認(rèn)路徑,應(yīng)該和我的是一樣的:C:\Program Files\MySQL\MySQL Server 8.0

2.找到include,和lib文件,include文件是包含的頭文件,lib文件是包含的庫文件c++ 連接mysql數(shù)據(jù)庫

?3.在創(chuàng)建的c++工程中加入include,lib文件路徑,按一下步驟

??????? 1.工程中的項(xiàng)目找到屬性

??????? 2.到 VC++ 目錄 中的包含目錄和庫目錄分別加入include文件和lib文件的路徑,

??????????????? 這是我的路徑:include文件路徑:C:\Program Files\MySQL\MySQL Server 8.0\include

???????????????????????????????????????? lib文件路徑:C:\Program Files\MySQL\MySQL Server 8.0\lib

c++ 連接mysql數(shù)據(jù)庫

?????????3. 到 鏈接器 中的 輸入 中的 附加依賴項(xiàng)中 加入 libmysql.lib 的依賴:c++ 連接mysql數(shù)據(jù)庫

???????? 4.還需要把下圖中的 libmysql.dll 的文件復(fù)制到 C:\Windows\System32 目錄中

c++ 連接mysql數(shù)據(jù)庫

?

連接mysql可以參考 mysql參考手冊 進(jìn)行查看

2.代碼實(shí)現(xiàn)連接

??????? 1. mysql_read_connect函數(shù),連接成功會(huì)返回MYSQL*連接句柄,返回得值與第一個(gè)參數(shù)得值相同,連接失敗返回一個(gè)null:

mysql_real_connect(
    MYSQL *mysql,   ///< 數(shù)據(jù)庫句柄
    const char *host, ///< 主機(jī)名
    const char *user, ///< 用戶名
    const char *passwd,///< 密碼
    const char *db, ///< 數(shù)據(jù)庫名
    unsigned int port, ///< 端口號(MySQL為3306)
    const char *unix_socket,///< unix_socket–unix連接方式,為NULL時(shí)表示不使用socket或管道機(jī)制
    unsigned long clientflag ///< clientflag–Mysql運(yùn)行為ODBC數(shù)據(jù)庫的標(biāo)記,一般取0
    );

??????? 例子:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<mysql.h>
#include<time.h>
#include<stdlib.h>

int main()
{
	int sr;
	srand((unsigned)time(NULL));
	sr = rand() % 50 + 1;
	//固定不變的
	MYSQL mysql;    //一個(gè)數(shù)據(jù)庫結(jié)構(gòu)體  
	MYSQL_RES* res; //一個(gè)結(jié)果集結(jié)構(gòu)體
	MYSQL_ROW row; //char** 二維數(shù)據(jù),存放一條條記錄
	//初始化數(shù)據(jù)庫
	mysql_init(&mysql);
	//設(shè)置編碼方式
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

	//連接數(shù)據(jù)庫                    //ip地址	   //用戶名 //密碼       //數(shù)據(jù)庫名
	if (mysql_real_connect(&mysql, "localhost", "root", "Z20020803", "box_man", 3306, NULL, 0) == NULL)
	{
		printf("錯(cuò)誤原因:%s\n", mysql_error(&mysql));
		printf("連接失敗\n");
		exit(-1);
	}
	//往數(shù)據(jù)庫中插入一個(gè)隨機(jī)數(shù)
	char* str1 = "insert into rand values(";
	char sql_insert[200];
	sprintf(sql_insert, "%s%d%s", str1, sr, ")");
	mysql_query(&mysql, sql_insert); //sql語句提交
	//查詢數(shù)據(jù)
	mysql_query(&mysql, "select * from rand");
	//獲取結(jié)果集
	res = mysql_store_result(&mysql);
	//給ROW賦值,判斷ROW是否為空,不為空就打印數(shù)據(jù)
	while (row = mysql_fetch_row(res))
	{
		printf("%s\n", row[0]);
	}
	//釋放結(jié)果集
	mysql_free_result(res);
	//關(guān)閉數(shù)據(jù)庫
	mysql_close(&mysql);
	//停留等待
	system("pause");
	return 0;

}

??????? 使用c++語句對數(shù)據(jù)庫進(jìn)行增刪改查,在使用c++中string類型時(shí),需要把string類型轉(zhuǎn)換為c中的類型,使用mysql_query函數(shù)把sql語句提交,查詢成功返回0,結(jié)果會(huì)被保存到mysql對象中,查詢失敗會(huì)返回非0值:

#define _CRT_SECURE_NO_WARNINGS


#include<iostream>
#include<mysql.h>
#include<string>
using namespace std;

int main()
{
	MYSQL mysql;
	MYSQL_RES* res;
	MYSQL_ROW row;

	mysql_init(&mysql);


	if (mysql_real_connect(&mysql, "localhost", "root", "Z20020803", "box_man", 3306, NULL, 0) == NULL)
	{
		printf("錯(cuò)誤提示:%s\n", mysql_error(&mysql));
		printf("連接失敗\n");
	}
	//設(shè)置字符集
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");

	string str1 = "alter table tb_77 modify sex varchar(20);";//修改表類型失敗
	mysql_query(&mysql, str1.c_str());
	string str = "insert into tb_77 values(5,'sdmqy','h');";//增加數(shù)據(jù)成功,不可以增加漢字
	mysql_query(&mysql, str.c_str());
	printf("%s", str.c_str());
	string str2 = "delete from tb_77 where sex = '女';";//刪除數(shù)據(jù)成功
	mysql_query(&mysql, str2.c_str());
	string str3 = "update tb_77 set name = 'ttb' where id = 2;";//更改也行
	mysql_query(&mysql, str3.c_str());


	mysql_close(&mysql);



	return 0;
}

??????? 各個(gè)類說明:

1.? mysql句柄類

1 MYSQL mysql;

??????? 該類在c++中操作數(shù)據(jù)庫都要使用到

2.MYSQL_RES查詢結(jié)果集

2 MYSQL_RES * res=nullptr;

??????? 用來保存查詢到的所有結(jié)果

3.MYSQL_ROW獲取結(jié)果集中的內(nèi)容

3. MYSQL_ROW row

??????? 該變量可以獲取到結(jié)果集中的數(shù)據(jù),并且輸出

4.獲取查詢結(jié)果集

1 mysql_store_result(查詢結(jié)果集變量)
2 mysql_use_result(查詢結(jié)果集變量)

??????? 第一種調(diào)用mysql_store_result(查詢結(jié)果集變量),把mysql數(shù)據(jù)庫中指定的表的數(shù)據(jù)全部進(jìn)行保存,把服務(wù)端得數(shù)據(jù)保存到客戶端

??????? 第二種調(diào)用mysql_use_result(查詢結(jié)果集變量),初始化檢索,方便后面一行一行讀取結(jié)果集,速度快,占用內(nèi)存少,但是會(huì)阻止其它線程使用,

5.讀取結(jié)果集

1 mysql_fetch_row(查詢結(jié)果集)

??????? 從結(jié)果集中獲取到一行數(shù)據(jù),有數(shù)據(jù)保存改行的每個(gè)字段值,沒有返回一個(gè)null

3.一些函數(shù)說明

??????? 1.mysql_num_fields(MYSQL_RES*)

??????????????? 該函數(shù)可以拿表中的列數(shù),返回值是一個(gè)unsigned類型

??????? 2.mysql_fetch_fields(MYSQL_RES*)

??????????????? 該函數(shù)可以拿到表中每一列的字段名,返回的是一個(gè)結(jié)構(gòu)體數(shù)組

??????? 3.mysql_fetch_lengths(MYSQL_RES*)

??????????????? 該函數(shù)拿到行中每一列的字段長度,返回結(jié)果是一個(gè)unsigned類型

??????? 4.mysql_free_result(MYSQL_RES*)

??????????????? 該函數(shù)釋放結(jié)果集

??????? 5.事務(wù)設(shè)置:
??????? 在mysql中事務(wù)是默認(rèn)自動(dòng)提交的,如果需要提交的事務(wù)多,對我們的操作會(huì)有影響,所以需要設(shè)置事務(wù)為手動(dòng)提交

  • mysql_autocommit(MYSQL* , mode)? 設(shè)置事務(wù)是否自動(dòng)提交函數(shù)

??????? 參數(shù):mode如果為“1”,自動(dòng)提交,為“0”為手動(dòng)提交?? 返回值:提交成功返回0,否則返回非0

  • mysql_commit(MYSQL* mysql)? 事務(wù)提交函數(shù)

??????? 返回值:成功返回0,否則返回非0

  • mysql_rollback(MYSQL* mysql)? 事務(wù)回滾函數(shù)

??????? 返回值:成功返回0,否則返回非0

??????? 6.打印錯(cuò)誤信息:

  • const char* mysql_error(MYSQL* mysql):返回錯(cuò)誤信息的描述
  • const char* mysql_errno(MYSQL* mysql):返回錯(cuò)誤的編號

代碼使用的例子文章來源地址http://www.zghlxwxcb.cn/news/detail-431927.html

#define _CRT_SECURE_NO_WARNINGS

#include<iostream>
#include<mysql.h>
using namespace std;

int main()
{
	//創(chuàng)建句柄
	MYSQL mysql;
	//創(chuàng)建數(shù)據(jù)集變量
	MYSQL_RES* res = nullptr;
	//創(chuàng)建結(jié)果集變量
	MYSQL_ROW row;
	//創(chuàng)建一個(gè)結(jié)構(gòu)體
	MYSQL_FIELD* field;

	//初始化數(shù)據(jù)庫句柄
	mysql_init(&mysql);
	//設(shè)置字符集
	//mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
	mysql_set_character_set(&mysql, "gbk");
	//開始連接數(shù)據(jù)庫
	if (mysql_real_connect(&mysql, "localhost", "root", "Z20020803", "box_man", 3306, NULL, 0))
	{
		cout << "連接成功" << endl;
	}
	else
	{
		cout << "連接失敗" << endl;
		return 0;
	}
	//設(shè)置事務(wù)
	mysql_autocommit(&mysql, "1");
	//增加數(shù)據(jù)
	string str1 = "insert into tb_912 values(2, 'xiaoming', '李四');";
	char ssql[1024];
	//使用sprintf拼出來的語句是一個(gè)標(biāo)準(zhǔn)的c語言字符串,可以使用該函數(shù)插入變量值
	sprintf(ssql, "insert into tb_912 values(%d, '%s', '%s');", 3, "daming", "17777777772");
	if (mysql_query(&mysql, ssql))//該語句提交成功返回0,失敗放回1
	{
		cout << "提交失敗" << endl;
	}
	else
	{
		cout << "提交成功" << endl;
	}
	//提交語句
	mysql_query(&mysql, str1.c_str());
	//刪除數(shù)據(jù)
	string str3 = "delete from tb_912 where id = 2;";
	mysql_query(&mysql, str3.c_str());
	//修改數(shù)據(jù)
	string str4 = "update tb_912 set name = '張三' where id = 1;";
	mysql_query(&mysql, str4.c_str());
	//查詢數(shù)據(jù)
	string str2 = "select * from tb_912;";
	mysql_query(&mysql, str2.c_str());
	//事務(wù)提交
	mysql_commit(&mysql);
	//獲取里面的結(jié)果集
	res = mysql_store_result(&mysql);
	//拿到結(jié)果集得列數(shù),調(diào)用的是 mysql_store_result() 的返回值,
	unsigned int a = mysql_num_fields(res);
	cout <<"表得列數(shù):"<< a << endl;
	//使用 mysql_fetch_fields() 函數(shù)獲取列的名字,返回的是一個(gè)結(jié)構(gòu)體數(shù)組
	field = mysql_fetch_fields(res);
	for (unsigned i = 0; i < a; i++)
	{
		cout << "當(dāng)前列的名字:" << field[i].name << endl;//取出名字
	}
	unsigned long* lengths;

	//從結(jié)果集中獲取到數(shù)據(jù) mysql_fetch_row() 獲取結(jié)果集中的一行數(shù)據(jù),
	//成功:返回記錄當(dāng)前行中每個(gè)字段的值,失?。悍祷匾粋€(gè)null
	while (row = mysql_fetch_row(res))
	{
		printf("%s %s %s \n", row[0], row[1], row[2]);
		//獲取列中字段的長度
		lengths = mysql_fetch_lengths(res);//返回的是一個(gè)數(shù)組地址
		
		for (unsigned int i = 0; i < a; i++)
		{
			cout << "當(dāng)前列的長度:" << lengths[i] << endl;//列數(shù)會(huì)構(gòu)成一個(gè)數(shù)組
		}
	}
	//釋放結(jié)果集
	mysql_free_result(res);
	//關(guān)閉mysql實(shí)例
	mysql_close(&mysql);
	return 0;
}

到了這里,關(guān)于c++ 連接mysql數(shù)據(jù)庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++連接mysql數(shù)據(jù)庫

    C++連接mysql數(shù)據(jù)庫

    目錄 一、準(zhǔn)備 二、讀取數(shù)據(jù) 三、修改數(shù)據(jù) 參考博客 mysql安裝及操作 首先在本地下載mysql數(shù)據(jù)庫,或者使用在線數(shù)據(jù)庫,在數(shù)據(jù)庫中創(chuàng)建一個(gè)表,往表里填入數(shù)據(jù),不然無法讀取到數(shù)據(jù)。運(yùn)行代碼前,將libmysql的靜態(tài)庫和動(dòng)態(tài)庫拷貝到代碼路徑,c++工程的包含路徑配置成mys

    2024年02月15日
    瀏覽(31)
  • c++ 連接mysql數(shù)據(jù)庫

    c++ 連接mysql數(shù)據(jù)庫

    ??????? 使用vs2019對window11中的數(shù)據(jù)庫進(jìn)行連接 1. 配置連接環(huán)境 ??????? 首先需要把mysql中的頭文件和庫文件放入到c++項(xiàng)目工程中 1.打開安裝MySQL的目錄,在windows系統(tǒng)中如果是默認(rèn)路徑,應(yīng)該和我的是一樣的:C:Program FilesMySQLMySQL Server 8.0 2.找到include,和lib文件,inclu

    2024年02月02日
    瀏覽(24)
  • C++實(shí)現(xiàn)MySQL數(shù)據(jù)庫連接池

    MySQL數(shù)據(jù)庫編程、單例模式、STL容器、C++11多線程(線程互斥、線程互斥、線程同步通信和unique_lock)、智能指針shared_ptr、lambda表達(dá)式、生產(chǎn)者-消費(fèi)者線程模型。 為了提升MySQL數(shù)據(jù)庫(基于C/S設(shè)計(jì)(客戶端-服務(wù)器))的訪問瓶頸,除了在服務(wù)器端增加緩沖服務(wù)器緩存常用的數(shù)

    2024年02月16日
    瀏覽(17)
  • Windows遠(yuǎn)程連接linux中mysql數(shù)據(jù)庫

    Windows遠(yuǎn)程連接linux中mysql數(shù)據(jù)庫

    ?我沒有mysql并且沒有把mysql配置到環(huán)境變量中,所以現(xiàn)在我要下載mysql Mysql官網(wǎng)下載地址:https://downloads.mysql.com/archives/installer 1. 選擇設(shè)置類型 雙擊運(yùn)行mysql-installer-community-8.0.26.msi,這里選擇是開發(fā)者默認(rèn)模式,所以直接選擇“Developer Default”,點(diǎn)擊“Next” ? ? ?默認(rèn)3306的端

    2024年02月12日
    瀏覽(31)
  • IntelliJ IDEA無公網(wǎng)遠(yuǎn)程連接Windows本地Mysql數(shù)據(jù)庫提高開發(fā)效率

    IntelliJ IDEA無公網(wǎng)遠(yuǎn)程連接Windows本地Mysql數(shù)據(jù)庫提高開發(fā)效率

    ?? 博客主頁 : 小羊失眠啦. ?? 系列專欄 : 《C語言》 《數(shù)據(jù)結(jié)構(gòu)》 《Linux》 《Cpolar》 ?? 感謝大家點(diǎn)贊??收藏?評論?? 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。 IDEA作為Java開發(fā)最主力的工具,在

    2024年02月05日
    瀏覽(22)
  • 【MySQL】使用DBeaver數(shù)據(jù)庫管理工具進(jìn)行MySQL數(shù)據(jù)庫連接

    【MySQL】使用DBeaver數(shù)據(jù)庫管理工具進(jìn)行MySQL數(shù)據(jù)庫連接

    一、數(shù)據(jù)庫連接信息填寫 1、服務(wù)器地址:填寫服務(wù)器部署的地址,以及端口號 2、數(shù)據(jù)庫:sys 3、用戶名:root 4、密碼:服務(wù)器上面設(shè)置的具體密碼 以上信息填寫錯(cuò)誤的報(bào)錯(cuò)提示 :Access denied for user ‘XXX’@’%’ to database ‘10.42.67.22’ 二、數(shù)據(jù)庫說明 1、數(shù)據(jù)庫連接時(shí)選擇的

    2024年02月09日
    瀏覽(109)
  • 使用python連接mysql數(shù)據(jù)庫

    使用python連接mysql數(shù)據(jù)庫

    第一章 Python 機(jī)器學(xué)習(xí)入門之連接mysql數(shù)據(jù)庫 提示:這里可以添加本文要記錄的大概內(nèi)容: 例如:隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。 在控制臺(tái)輸入如下: 代碼如下(示例): 演示

    2024年02月16日
    瀏覽(29)
  • 實(shí)例講解C++連接各種數(shù)據(jù)庫,包含SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 數(shù)據(jù)庫

    ? C++ 是一種通用的編程語言,可以使用不同的庫和驅(qū)動(dòng)程序來連接各種數(shù)據(jù)庫。以下是一些示例代碼,演示如何使用 C++ 連接 SQL Server、MySQL、Oracle、ACCESS、SQLite 和 PostgreSQL、MongoDB 數(shù)據(jù)庫。 連接 SQL Server 數(shù)據(jù)庫 要使用 C++ 連接 SQL Server 數(shù)據(jù)庫,可以使用 Microsoft 的 ADODB 庫。以

    2024年02月05日
    瀏覽(35)
  • 使用C#連接MySQL數(shù)據(jù)庫(詳解)

    使用C#連接MySQL數(shù)據(jù)庫(詳解)

    ?前言? 本片文章,主要在于C#連接MySQL數(shù)據(jù)庫,由于這之間無法建立直接聯(lián)系,這時(shí)候就涉及到了第三方連接工具.NET,以此來建立C#與MySQL數(shù)據(jù)庫的連接 ??歡迎點(diǎn)贊 ?? 收藏 ?留言評論 ??私信必回喲?? ??博主將持續(xù)更新學(xué)習(xí)記錄收獲,友友們有任何問題可以在評論區(qū)留

    2024年02月05日
    瀏覽(39)
  • 使用eclipse連接mysql數(shù)據(jù)庫步驟

    使用eclipse連接mysql數(shù)據(jù)庫步驟

    1.導(dǎo)入連接MySQL數(shù)據(jù)庫驅(qū)動(dòng)包(例如mysql-connector-java-5.1.7-bin.jar),并測試。 步驟: 1)在eclipse里面點(diǎn)擊右上角的圖標(biāo),如下圖所示。 2)選中Database Connections右鍵,點(diǎn)new。 3)選擇MySQL,點(diǎn)擊next。 4)如圖所示: 2.引用MySQL驅(qū)動(dòng)包jar 在項(xiàng)目右鍵一個(gè)文件夾lib,把驅(qū)動(dòng)包復(fù)制進(jìn)去,

    2024年02月11日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包