MySQL C API
4025 ワード
1.mysqlclientライブラリに含まれるヘッダファイル
#include
コンパイル時に-lmysqlclientを付ける
2.変数MYSQL mysqlの作成
MYSQL構造は1つのデータベース接続ハンドルを表し、ほとんどの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文を構築し、クエリーを行う:
5.MYSQLを宣言RESタイプの変数:MYSQL_RES res、構造体は以下の通りです.
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サーバへの接続を閉じる
#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サーバへの接続を閉じる