首頁 > 軟體

vs如何讀取mysql中的資料並解決中文亂碼問題

2022-09-30 14:02:21

一、在vs中新建一個工程,然後新建一個原始檔

二、右擊上述圖片中的mysql_test工程名,然後在最下方找到屬性,並點選

三、點選VC++目錄,在包含目錄中新增mysql的檔案路徑,一般情況下的mysql的預設安裝路徑都是在C槽的Program Files下的,找到include路徑,然後點選確定

四、在C/C++中的常規選項中,找到附加包含目錄,同時也將mysql的include路徑包含進去 

五、在屬性頁中選擇連結器的常規選項,在裡面找到附加庫目錄,然後新增mysql的lib路徑

六、 在連結器的輸入選項中,找到附加依賴項,然後直接寫上libmysql.lib

七、最後再mysql的bin目錄中,將libmysql.dll複製一份到c:windowssystem32路徑下即可。 八、隨便找一段程式碼測試,這裡用的是其他人的部落格里面的程式碼,當然有些許是修改了的,這裡會作相應介紹。

mysql測試程式碼如下:

create database test;
use test;
create table test_1(name varchar(128),age int);
insert into test_1 values('獜洛橙',18);

vs測試程式碼如下(要注意修改mysql使用者名稱和密碼為自己的,同時還有database的名字和裡面的表的名字,我這裡使用者名稱是root,密碼是123456,database是上面mysql測試程式碼中的test,表名是test_1):

#include <stdio.h>
#include <WinSock.h>
#include <Windows.h>
#include <mysql.h>
#include<iostream>
using namespace std;
 
MYSQL mysql;  //mysql連線
MYSQL_RES* res; //一個結果集結構體   
MYSQL_ROW row; //char** 二維陣列,存放一條條記錄  
 
const char DataBase_UserName[] = "root";    //資料庫使用者名稱username
const char DataBase_Password[] = "123456";   //資料庫密碼,填自己的密碼
const char DataBase_Host[] = "localhost";  //資料庫連線地址
//注意有時候使用主機ip會報錯,此時可以將ip改為localhost
const char DataBase_Name[] = "test";  //database name
unsigned int DataBase_Port = 3306;            //server port
 
bool ConnectDatabase(); //函數申明
void FreeConnect();   //釋放資源
 
wchar_t* Utf8_2_Unicode(char* row_i)
{
	int len = MultiByteToWideChar(CP_UTF8, 0, row_i, strlen(row_i), NULL, 0);
	wchar_t* wszStr = new wchar_t[len + 1];
	MultiByteToWideChar(CP_UTF8, 0, row_i, strlen(row_i), wszStr, len);
	wszStr[len] = '';
	return wszStr;
}
 
void main()
{
	setlocale(LC_ALL, "chs");
	ConnectDatabase();	//連線資料庫
	//查詢資料
	mysql_query(&mysql, "SELECT * from test_1");
	//獲取結果集
	res = mysql_store_result(&mysql);
	//顯示資料
	//給ROW賦值,判斷ROW是否為空,不為空就列印資料。
	while (row = mysql_fetch_row(res))
	{
		wchar_t* m1 = Utf8_2_Unicode(row[0]);
		wchar_t* m2 = Utf8_2_Unicode(row[1]);
		wprintf_s(L"%s  %s", m1,m2);
	}
	FreeConnect();
	getchar();
}
 
 
bool ConnectDatabase()
{
	//初始化mysql
	mysql_init(&mysql);   //連線mysql,資料庫
	//中間分別是主機,使用者名稱,密碼,資料庫名,埠號(可以寫預設0或者3306等),可以先寫成引數再傳進去
	if (!(mysql_real_connect(&mysql, DataBase_Host, DataBase_UserName, DataBase_Password, DataBase_Name, DataBase_Port, NULL, 0))) {
		printf("Error connecting to database:%sn", mysql_error(&mysql));
		return false;
	}
	else {
		MessageBoxA(NULL, "連線MYSQL資料成功!", "訊息", MB_OK);
		printf("Connected...n");
		return true;
	}
}
//釋放資源
void FreeConnect() {
	mysql_close(&mysql);
}

九、如果成功即顯示如下的提示資訊框

十、列印結果(成功顯示)

到此這篇關於vs如何讀取mysql中的資料並解決中文亂碼問題的文章就介紹到這了,更多相關vs讀取mysql資料內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com