C 連線mysql及遇到的相關問題

2021-09-09 04:25:47 字數 3745 閱讀 7842

最近接觸了很多資料庫的東西,本來是一直接觸的是sql server,不過由於專案需要就開始對mysql進行了連線。下面就讓我這個菜鳥**下經驗吧。

1、使用api的方式連線,需要載入mysql的標頭檔案和lib檔案。

在vs2010的附加包含目錄中新增\mysql\mysql server 5.1\include。在安裝mysql的目錄下找。 把libmysql.dll和libmysql.lib檔案拷貝到所建的工程目錄下。然後在標頭檔案裡包含以下內容:

1

//mysql所需的標頭檔案和庫檔案

2 #include "

winsock.h

"3 #include "

mysql.h"4

#pragma comment(lib,"libmysql.lib")

2、進行編碼

(1)連線mysql資料庫

標頭檔案裡定義資料源指標 mysql m_sqlcon;

//連線mysql資料庫

1

try2

10return

true;

11}

12catch

(...)

13

(2)關閉資料庫

1 mysql_close(&m_sqlcon);

(3)建立表

1

char* pquery = "

create table if not exists ds_building( id varchar(10),name varchar(255),descs varchar(255),primary key (id))"2

if(mysql_real_query(&m_sqlcon,pquery,(uint)strlen(pquery))!=0

) 3

附mysql的api介面:

1

mysql_affected_rows() 返回被最新的update, delete或insert查詢影響的行數。

2mysql_close() 關閉乙個伺服器連線。

3mysql_connect() 連線乙個mysql伺服器。該函式不推薦;使用mysql_real_connect()代替。

4mysql_change_user() 改變在乙個開啟的連線上的使用者和資料庫。

5mysql_create_db() 建立乙個資料庫。該函式不推薦;而使用sql命令create database。

6mysql_data_seek() 在乙個查詢結果集合中搜尋一任意行。

7mysql_debug() 用給定字串做乙個dbug_push。

8mysql_drop_db() 拋棄乙個資料庫。該函式不推薦;而使用sql命令drop database。

9mysql_dump_debug_info() 讓伺服器將除錯資訊寫入日誌檔案。

10mysql_eof() 確定是否已經讀到乙個結果集合的最後一行。這功能被反對; mysql_errno()或mysql_error()可以相反被使用。

11mysql_errno() 返回最近被呼叫的mysql函式的出錯編號。

12mysql_error() 返回最近被呼叫的mysql函式的出錯訊息。

13mysql_escape_string() 用在sql語句中的字串的轉義特殊字元。

14mysql_fetch_field() 返回下乙個表字段的型別。

15mysql_fetch_field_direct () 返回乙個表字段的型別,給出乙個字段編號。

16mysql_fetch_fields() 返回乙個所有字段結構的陣列。

17mysql_fetch_lengths() 返回當前行中所有列的長度。

18mysql_fetch_row() 從結果集合中取得下一行。

19mysql_field_seek() 把列游標放在乙個指定的列上。

20mysql_field_count() 返回最近查詢的結果列的數量。

21mysql_field_tell() 返回用於最後乙個mysql_fetch_field()的字段游標的位置。

22mysql_free_result() 釋放乙個結果集合使用的記憶體。

23mysql_get_client_info() 返回客戶版本資訊。

24mysql_get_host_info() 返回乙個描述連線的字串。

25mysql_get_proto_info() 返回連線使用的協議版本。

26mysql_get_server_info() 返回伺服器版本號。

27mysql_info() 返回關於最近執行得查詢的資訊。

28mysql_init() 獲得或初始化乙個mysql結構。

29mysql_insert_id() 返回有前乙個查詢為乙個auto_increment列生成的id。

30mysql_kill() 殺死乙個給定的執行緒。

31mysql_list_dbs() 返回匹配乙個簡單的正規表示式的資料庫名。

32mysql_list_fields() 返回匹配乙個簡單的正規表示式的列名。

33mysql_list_processes() 返回當前伺服器執行緒的一張表。

34mysql_list_tables() 返回匹配乙個簡單的正規表示式的表名。

35mysql_num_fields() 返回乙個結果集合重的列的數量。

36mysql_num_rows() 返回乙個結果集合中的行的數量。

37mysql_options() 設定對mysql_connect()的連線選項。

38mysql_ping() 檢查對伺服器的連線是否正在工作,必要時重新連線。

39mysql_query() 執行指定為乙個空結尾的字串的sql查詢:int mysql_query(mysql *mysql,const char *query)

返回值:查詢成功返回0;查詢出現錯誤返回非0

40mysql_real_connect() 連線乙個mysql伺服器。

41mysql_real_query() 執行指定為帶計數的字串的sql查詢。

42mysql_reload() 告訴伺服器重灌授權表。

43mysql_row_seek() 搜尋在結果集合中的行,使用從mysql_row_tell()返回的值。

44mysql_row_tell() 返回行游標位置。

45mysql_select_db() 連線乙個資料庫。

46mysql_shutdown() 關掉資料庫伺服器。

47mysql_stat() 返回作為字串的伺服器狀態。

48mysql_store_result() 檢索乙個完整的結果集合給客戶。

49mysql_thread_id() 返回當前執行緒的id。

50 mysql_use_result() 初始化乙個一行一行地結果集合的檢索。

所遇到的問題:

剛開始我用vs2015連線mysql,發現一直出現無法解析外部符號這種錯誤,找了很久看了鏈結器那些發現沒有什麼錯啊。後來找了很久發現是因為vs預設的執行平台是32位的,而我的mysql是64位.對於這種你只需要在專案屬性的配置管理中把執行平台改為x64即可。當然,也可以下乙個mysql32位的lib和dll。

MySQL 遇到的死鎖問 MySQL 死鎖問題分析

圖4 聚簇索引和二級索引 下面分析下索引和鎖的關係。1 delete from msg where id 2 由於id是主鍵,因此直接鎖住整行記錄即可。圖52 delete from msg where token cvs 由於token是二級索引,因此首先鎖住二級索引 兩行 接著會鎖住相應主鍵所對...

Anaconda安裝及pip公升級遇到的問題詳解

系統環境 win10 anaconda安裝及公升級pip庫,遇到各種問題。首先我們要捋清楚程式安裝及公升級中的幾個bug點 1,anaconda安裝的路徑是否有中文 2,anaconda的環境變數是否設定正確 3,操作的使用者是否有管理員許可權 4,是否缺少其他的庫影響了此次的公升級 5,映象 錯誤...

MySQL安裝及遇到的問題

這裡主要是針對mysql在windows作業系統上的一些安裝及遇到的問題 開啟你剛剛解壓的mysql 5.7.18 winx64資料夾裡面,你會發現裡面有my default.ini配置檔案 注 有的沒有這個檔案,需要自己新建乙個my.ini的檔案 這個是預設的配置檔案,複製乙個自己的改名字為my....