vs如何讀取mysql中的數(shù)據(jù)并解決中文亂碼問題
一、在vs中新建一個工程,然后新建一個源文件
二、右擊上述圖片中的mysql_test工程名,然后在最下方找到屬性,并點擊
三、點擊VC++目錄,在包含目錄中添加mysql的文件路徑,一般情況下的mysql的默認(rèn)安裝路徑都是在C盤的Program Files下的,找到include路徑,然后點擊確定
四、在C/C++中的常規(guī)選項中,找到附加包含目錄,同時也將mysql的include路徑包含進(jìn)去
五、在屬性頁中選擇鏈接器的常規(guī)選項,在里面找到附加庫目錄,然后添加mysql的lib路徑
六、 在鏈接器的輸入選項中,找到附加依賴項,然后直接寫上libmysql.lib
七、最后再mysql的bin目錄中,將libmysql.dll復(fù)制一份到c:\windows\system32路徑下即可。 八、隨便找一段代碼測試,這里用的是其他人的博客里面的代碼,當(dāng)然有些許是修改了的,這里會作相應(yīng)介紹。
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; //一個結(jié)果集結(jié)構(gòu)體 MYSQL_ROW row; //char** 二維數(shù)組,存放一條條記錄 const char DataBase_UserName[] = "root"; //數(shù)據(jù)庫用戶名username const char DataBase_Password[] = "123456"; //數(shù)據(jù)庫密碼,填自己的密碼 const char DataBase_Host[] = "localhost"; //數(shù)據(jù)庫連接地址 //注意有時候使用主機(jī)ip會報錯,此時可以將ip改為localhost const char DataBase_Name[] = "test"; //database name unsigned int DataBase_Port = 3306; //server port bool ConnectDatabase(); //函數(shù)申明 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] = '\0'; return wszStr; } void main() { setlocale(LC_ALL, "chs"); ConnectDatabase(); //連接數(shù)據(jù)庫 //查詢數(shù)據(jù) mysql_query(&mysql, "SELECT * from test_1"); //獲取結(jié)果集 res = mysql_store_result(&mysql); //顯示數(shù)據(jù) //給ROW賦值,判斷ROW是否為空,不為空就打印數(shù)據(jù)。 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,數(shù)據(jù)庫 //中間分別是主機(jī),用戶名,密碼,數(shù)據(jù)庫名,端口號(可以寫默認(rèn)0或者3306等),可以先寫成參數(shù)再傳進(jìn)去 if (!(mysql_real_connect(&mysql, DataBase_Host, DataBase_UserName, DataBase_Password, DataBase_Name, DataBase_Port, NULL, 0))) { printf("Error connecting to database:%s\n", mysql_error(&mysql)); return false; } else { MessageBoxA(NULL, "連接MYSQL數(shù)據(jù)成功!", "消息", MB_OK); printf("Connected...\n"); return true; } } //釋放資源 void FreeConnect() { mysql_close(&mysql); }
九、如果成功即顯示如下的提示信息框
十、打印結(jié)果(成功顯示)
到此這篇關(guān)于vs如何讀取mysql中的數(shù)據(jù)并解決中文亂碼問題的文章就介紹到這了,更多相關(guān)vs讀取mysql數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL將時間戳轉(zhuǎn)換為年月日格式的實現(xiàn)
在我們的項目開發(fā)過程中,經(jīng)常需要將時間戳或日期時間字段轉(zhuǎn)換為特定的格式,本文主要介紹了MySQL將時間戳轉(zhuǎn)換為年月日格式的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-08-08mysql?窗口函數(shù)?ROW_NUMBER、NTILE詳解
這篇文章主要介紹了mysql?窗口函數(shù)?ROW_NUMBER、NTILE,本文通過sql語句給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07CentOS系統(tǒng)中MySQL5.1升級至5.5.36
有相關(guān)測試數(shù)據(jù)說明從5.1到5.5+,MySQL性能會有明顯的提升,具體的需要自己建立測試環(huán)境去實踐下,今天我們就來操作下,并記錄下來升級的具體步驟2017-07-07MySQL對JSON數(shù)據(jù)進(jìn)行查詢實例代碼
這篇文章主要給大家介紹了關(guān)于MySQL對JSON數(shù)據(jù)進(jìn)行查詢的相關(guān)資料,MySQL支持使用JSON類型存儲數(shù)據(jù),并提供了多種查詢JSON數(shù)據(jù)的方法,需要的朋友可以參考下2023-07-07關(guān)于Mysql如何設(shè)計高性能的數(shù)據(jù)庫
這篇文章主要介紹了關(guān)于Mysql如何設(shè)計高性能的數(shù)據(jù)庫,mysql支持的數(shù)據(jù)類型非常多,選擇正確的數(shù)據(jù)類型對于獲得高性能至關(guān)重要,本文就來詳細(xì)說明如何設(shè)計出高性能的數(shù)據(jù)庫,需要的朋友可以參考下2023-07-07Mysql及Navicat中設(shè)置字段自動填充當(dāng)前時間及修改時間實現(xiàn)
這篇文章主要給大家介紹了關(guān)于Mysql及Navicat中設(shè)置字段自動填充當(dāng)前時間及修改時間實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2023-07-07