最近接觸了很多資料庫的東西,本來是一直接觸的是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資料庫
1try2
10return
true;
11}
12catch
(...)
13
(2)關閉資料庫
1 mysql_close(&m_sqlcon);
(3)建立表
1char* 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介面:
1mysql_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....