mysql介面 mysql 資料庫介面

2021-10-25 14:18:42 字數 4352 閱讀 6832

一般步驟是:

1.呼叫mysql_init()初始化mysql結構,許多的函式執行需要這個結構體。

2.呼叫mysql_real_connect()連線資料庫,引數中涉及到資料庫名,資料庫登入名,資料庫密碼等等。

3.呼叫mysql_real_query()執行一條select sql語句,通過mysql_store_result()的返回值獲得select的結果,返回的結果就是乙個mysql_res結構的指標。

4.呼叫mysql_fetch_row()獲得一條記錄,函式的返回值是mysql_row物件,這是乙個char二維陣列。獲取一條記錄以後,mysql_fetch_row會將游標自動向下移動一條記錄。

5.呼叫mysql_free_result()釋放結果資源,呼叫mysql_close關閉連線。

1.mysql_sqlstate

const char *mysql_sqlstate(mysql *mysql)

描述返回由null終結的字串,該字串包含關於上次錯誤的sqlstate錯誤**。錯誤**包含5個字元。'00000'表示無錯誤。其值由ansi sql和odbc指定。

注意:並非所有的mysql錯誤均會被對映到sqlstate錯誤**。值'hy000'(一般錯誤)用於未對映的錯誤。

返回值包含sqlstate錯誤碼的、由null終結的字串。

2..mysql_real_connect 連線遠端資料庫

mysql *mysql_real_connect(mysql *mysql,

const char *host, // 連線主機

const char *user, // 資料庫使用者

const char *passwd, // 資料庫密碼

const char *db, // 資料庫

unsigned int port, // 埠

const char *unix_socket, // 如果unix_socket不是null,該字串描述了應使用的套接字或命名管道。注意,「host」引數決定了連線的型別。

unsigned long client_flag // client_flag的值通常為0,但是,也能將其設定為下述標誌的組合,以允許特定功能

標誌名稱

標誌描述

client_compress

使用壓縮協議。

client_found_rows

返回發現的行數(匹配的),而不是受影響的行數。

client_ignore_space

允許在函式名後使用空格。使所有的函式名成為保留字。

client_interactive

關閉連線之前,允許interactive_timeout(取代了wait_timeout)秒的不活動時間。客戶端的會話wait_timeout變數被設為會話interactive_timeout變數的值。

client_local_files

允許load data local處理功能。

client_multi_statements

通知伺服器,客戶端可能在單個字串內傳送多條語句(由『;』隔開)。如果未設定該標誌,將禁止多語句執行。

client_multi_results

通知伺服器,客戶端能夠處理來自多語句執行或儲存程式的多個結果集。如果設定了client_multi_statements,將自動設定它。

client_no_schema

禁止db_name.tbl_name.col_name語法。它用於odbc。如果使用了該語法,它會使分析程式生成錯誤,在捕獲某些odbc程式中的缺陷時,它很有用。

client_odbc

客戶端是odbc客戶端。它將mysqld變得更為odbc友好。

client_ssl

使用ssl(加密協議)。該選項不應由應用程式設定,它是在客戶端庫內部設定的。

如:if ( ! mysql_real_connect

m_pmysql,

m_pszipaddress, // localhost

m_pszusername,  // root

m_pszuserpassword, // 1234

m_pszdatabasename,  // mytestdb

0,null,

client_multi_statements | client_multi_results/*client_local_files*/)

3.mysql_set_character_set 為當前連線設定預設的字符集

該函式用於為當前連線設定預設的字符集。字串csname指定了1個有效的字符集名稱。連線校對成為字符集的預設校對。該函式的工作方式與set names語句類似,但它還能設定mysql->charset的值,從而影響了由mysql_real_escape_string()設定的字符集。該函式是在mysql 5.0.7中增加的。

返回:該函式0表示成功,非0值表示出現錯誤。

如: mysql_set_character_set( m_pmysql, "utf8");

4.mysql_ping

int mysql_ping(mysql *mysql)

ping 乙個伺服器連線,如果沒有連線則重新連線。

如果存在連線,則返回 true。如果失敗,則返回 false。

5.mysql_query 傳送一條 mysql 查詢

int mysql_query(mysql *mysql, const char *sqlcmd)

如果沒有開啟的連線,本函式會嘗試無引數呼叫 mysql_connect() 函式來建立乙個連線並使用之。

返回值:

成功返回true,失敗返回false。 // random中 if(mysql_query(... , ...) ) // 是否搞反了???

6.mysql_store_result

mysql_res *mysql_store_result(mysql *mysql)

在使用 mysql_query() 進行一次查詢後,一般要用這兩個函式之一來把結果存到乙個 mysql_res * 變數中。

mysql_use_result 與 mysql_store_result 的區別:

mysql_use_result() 的結果必須「一次性用完」,也就是說用它得到乙個 result 後,必須反覆用 mysql_fetch_row() 讀取其結果直至該函式返回 null 為止,否則如果你再次進行 mysql 查詢,會得到 「commands out of sync; you can't run this command now」 的錯誤。

mysql_store_result() 得到 result 是存下來的,你無需把全部行結果讀完,就可以進行另外的查詢。比如你進行乙個查詢,得到一系列記錄,再根據這些結果,用乙個迴圈再進行資料庫查詢,就只能用 mysql_store_result() 。

返回值具有多個結果的mysql_res結果集合。如果出現錯誤,返回null。

如:mysql_res *_result;

mysql_row _row;

_result = mysql_store_result(m_pmysql);

_ifields = mysql_num_fields(_result);

while ( ( _row = mysql_fetch_row( _result ) ) )

額外:關於mysql_store_result的使用: 

7.mysql_num_fields 獲取結果中列的個數

如果失敗,則返回 false。

_ifields = mysql_num_fields(_result); // mysql_res *_result; int _ifields;

8.mysql_fetch_row

mysql_row mysql_fetch_row(mysql_res *result)

獲得一條記錄,函式的返回值是mysql_row物件,這是乙個char二維陣列。獲取一條記錄以後,mysql_fetch_row會將游標自動向下移動一條記錄。

當在mysql_store_result()之後使用時,如果沒有更多的行可檢索時,mysql_fetch_row()返回null。

9.mysql_free_result

釋放結果記憶體

如果成功,則返回 true,如果失敗,則返回 false。

10.mysql_error

函式返回上乙個 mysql 操作產生的文字錯誤資訊。

本函式返回上乙個 mysql 函式的錯誤文字,如果沒有出錯則返回 ''(空字串)。

11.mysql_close

當你從資料庫獲取了資料後,還要對這些資料進行複雜運算加工時(肯定很耗時間)

這時就應關閉資料庫連線,以便其他人使用

或者 mysql_query查詢完,就呼叫mysql_close是個很好的習慣。

mysql 介面庫 mysql 資料庫介面

標籤 1.mysql sqlstate const char mysql sqlstate mysql mysql 描述返回由null終結的字串,該字串包含關於上次錯誤的sqlstate錯誤 錯誤 包含5個字元。00000 表示無錯誤。其值由ansi sql和odbc指定。注意 並非所有的mysql...

mysql資料庫效能資料 MYSQL資料庫效能優化

1.選取最適用的字段屬性 表中字段的寬度設得盡可能小 char 的上限為 255 位元組 固定占用空間 varchar 的上限 65535 位元組 實際占用空間 text 的上限為 65535。盡量把字段設定為 not null,執行查詢的時候,資料庫不用去比較 null 值。2.使用連線 join...

MySQL資料庫使用 MySQL資料庫管理

開發時一般不使用系統的root使用者,應該是建立乙個新的使用者,管理乙個工程。登入使用者的命令 mysql uusername p 登入完成後就進入sql命令格式,格式以 結尾。windows用安裝的時候設定的root登入命令列,如下圖所示。linux安裝時若沒有提示設定root密碼的,可以使用系統...