MySQL C API

4025 ワード

1.mysqlclientライブラリに含まれるヘッダファイル
#include
コンパイル時に-lmysqlclientを付ける
2.変数MYSQL mysqlの作成
MYSQL構造は1つのデータベース接続ハンドルを表し、ほとんどのMySQL関数が使用され、その構造体は以下の通りです.
typedef struct st_mysql {
 NET net; /* Communication parameters */
 gptr connector_fd; /* ConnectorFd for SSL */
 char *host,*user,*passwd,*unix_socket,
 *server_version,*host_info,*info,*db;
 unsigned int port,client_flag,server_capabilities;
 unsigned int protocol_version;
 unsigned int field_count;
 unsigned int server_status;
 unsigned long thread_id; /* Id for connection in server */
 my_ulonglong affected_rows;
 my_ulonglong insert_id; /* id if insert on table with NEXTNR */
 my_ulonglong extra_info; /* Used by mysqlshow */
 unsigned long packet_length;
 enum mysql_status status;
 MYSQL_FIELD *fields;
 MEM_ROOT field_alloc;
 my_bool free_me; /* If free in mysql_close */
 my_bool reconnect; /* set to 1 if automatic reconnect */
 struct st_mysql_options options;
 char scramble_buff[9];
 struct charset_info_st *charset;
 unsigned int server_language;
} MYSQL;

3.mysql変数を初期化しmysql_を呼び出すinit(&mysql)、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, unsigned long client_flag)
4.sql文を構築し、クエリーを行う:mysql_real_query, :int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
5.MYSQLを宣言RESタイプの変数:MYSQL_RES res、構造体は以下の通りです.
typedef struct st_mysql_res {
 my_ulonglong row_count;
 unsigned int field_count, current_field;
 MYSQL_FIELD *fields;
 MYSQL_DATA *data;
 MYSQL_ROWS *data_cursor;
 MEM_ROOT field_alloc;
 MYSQL_ROW row; /* If unbuffered read */
 MYSQL_ROW current_row; /* buffer to current row */
 unsigned long *lengths; /* column lengths of current row */
 MYSQL *handle; /* for unbuffered reads */
 my_bool eof; /* Used my mysql_fetch_row */
} MYSQL_RES;
          MYSQL_RES :
res = mysql_store_result(&mysql);

MYSQL_RES *mysql_store_result(MYSQL *mysql)
クエリが結果セットを返さない場合、mysql_store_result()はNullポインタ(たとえば、クエリがINSERT文の場合)を返します.
結果セットの読み込みに失敗した場合、mysql_store_result()はNullポインタも返します.mysqlをチェックしてerror()が空でない文字列を返すかどうかmysql_Errno()が0以外の値を返すかmysql_field_count()が0を返すかどうか、エラーが発生しているかどうかを確認できます.
ローが返されない場合は、空の結果セットが返されます.(空の結果セットの設定は、戻り値である空のポインタとは異なります).
6.mysql_が呼び出されるとstore_result()はNullポインタではない結果を得てmysql_を呼び出すnum_rows()は、結果セットのロー数を見つけ、mysql_を呼び出す.fetch_row()は、結果セットのローを取得したりmysql_を呼び出したりします.row_seek()とmysql_row_tell()は、結果セットの現在のローの位置を取得または設定します.
7.mysql_を呼び出すfree_result()結果セットの解放
8.mysql_を呼び出すclose()、MySQLサーバへの接続を閉じる