Mysql C API関数の詳細
21892 ワード
説明
mysql_real_connect() MYSQL 。 mysql NULL , 、 、 。 , , 。 mysql_init() , mysql_close() 。 。
戻り値
MYSQL* 。 , NULL。
エラー
, NULL。
mysql ,mysql_errno() API , 。“0” 。 MySQL errmsg.h , 。 B: , 。
, , , mysql_fetch_row() , mysql_errno()。
, , mysql_errno()。
戻り値 , mysql_xxx() 。“0” 。
説明
mysql , API ,mysql_error() 、 Null 。 ,mysql_error() , 。
, , mysql_error()。
mysql_errno() , :
if(mysql_errno(&mysql))
{
// an error occurred
}
if(mysql_error(&mysql)[0] != '\0')
{
// an error occurred
}
MySQL , 。 , , 5.10.2 ,“ ”。
戻り値
、 Null 。 , 。
エラー
。
説明:
SQL SQL 。 9.1.1 ,“ ”。
, “from” SQL 。 “to” , 1 NULL 。 NUL (ASCII 0)、‘
’、‘\r’、‘\’、‘'’、‘"’、 Control-Z( 9.1 ,“ ”)。( ,MySQL , 。 , )。
“from” “long”。 “to” length*2+1 。 , 2 , Null 。 mysql_real_escape_string() ,“to” Null 。 , Null 。
, mysql_set_character_set() , SET NAMES ( SET CHARACTER SET) 。mysql_set_character_set() SET NAMES, mysql_real_escape_string() , SET NAMES 。
例:
char query[1000],*end;
end = strmov(query,"INSERT INTO test_table values(");
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"What's this",11);
*end++ = '\'';
*end++ = ',';
*end++ = '\'';
end += mysql_real_escape_string(&mysql, end,"binary data: \0\r
",16);
*end++ = '\'';
*end++ = ')';
if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
{
fprintf(stderr, "Failed to insert row, Error: %s
",
mysql_error(&mysql));
}
strmov() mysqlclient , strcpy() , 1 Null 。
戻り値
“to” , Null 。
説明
UPDATE , DELETE , INSERT 。 UPDATE、DELETE INSERT , mysql_query() 。 SELECT ,mysql_affected_rows() mysql_num_rows() 。
戻り値
0 。“0” UPDATE , WHERE , 。“-1” , , SELECT , mysql_store_result() mysql_affected_rows()。 mysql_affected_rows() , “(my_ulonglong)-1” “(my_ulonglong)~0”, “-1”。
エラー
。
例:
mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10");
printf("%ld products updated",(long) mysql_affected_rows(&mysql));
mysqld CLIENT_FOUND_ROWS, UPDATE ,mysql_affected_rows() WHERE 。
, REPLACE , ,mysql_affected_rows() 2。 , , 1 。
“INSERT ... ON DUPLICATE KEY UPDATE” , ,mysql_affected_rows() 1, , 2
- mysql_character_set_name() const char *mysql_character_set_name(MYSQL *mysql)
説明
。
戻り値
。
エラー
。
説明
。 csname 1 。 。 SET NAMES , mysql->charset , mysql_real_escape_string() 。
MySQL 5.0.7 。
戻り値
0 , 0 。
例:
MYSQL mysql;
mysql_init(&mysql);
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s
",
mysql_error(&mysql));
}
if (!mysql_set_charset_name(&mysql, "utf8"))
{
printf("New client character set: %s
", mysql_character_set_name(&mysql));
}
説明
。 mysql_init() mysql_connect() ,mysql_close() mysql 。
。
。
説明
db mysql ( )。 , 。
, mysql_select_db() 。
戻り値
0 , 0 。
エラー
· CR_COMMANDS_OUT_OF_SYNC
。
· CR_SERVER_GONE_ERROR
MySQL 。
· CR_SERVER_LOST
, 。
· CR_UNKNOWN_ERROR
。
説明
“query” SQL , “long”。 , 1 SQL , (‘;’) “\g”。 , 。 25.2.9 ,“ C API ”。
, mysql_real_query() mysql_query(), , ‘\0’ 。 ,mysql_real_query() mysql_query() , strlen()。
, mysql_field_count() 25.2.3.22 ,“mysql_field_count()”。
戻り値
, 0。 , 0 。
エラー
· CR_COMMANDS_OUT_OF_SYNC
不適切な順序で命令を実行した.
· CR_SERVER_GONE_ERROR
MySQL 。
· CR_SERVER_LOST
, 。
· CR_UNKNOWN_ERROR
。
- mysql_fetch_field() MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)
説明
MYSQL_FIELD 。 , 。 ,mysql_fetch_field() NULL。
SELECT , mysql_fetch_field(), 1 。 mysql_field_seek() mysql_fetch_field() 。
mysql_query() SELECT, mysql_store_result(), mysql_fetch_field() BLOB ,MySQL Blob (8KB)。 8KB MySQL BLOB 。 。 ,field->max_length 。
戻り値
MYSQL_FIELD 。 , NULL。
エラー
。
例:
MYSQL_FIELD *field;
while((field = mysql_fetch_field(result)))
{
printf("field name %s
", field->name);
}
説明
(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE ), mysql_store_result() mysql_use_result() 。
, mysql_store_result() mysql_use_result(), mysql_store_result(), 。 mysql_store_result() 0, ( )。
, mysql_field_count() 。 25.2.3.22 ,“mysql_field_count()”。
mysql_store_result() , 1 MYSQL_RES , 。
,mysql_store_result() Null ( , INSERT )。
,mysql_store_result() Null 。 mysql_error() ,mysql_errno() 0 , mysql_field_count() 0, 。
, 。( )。
mysql_store_result() Null , mysql_num_rows() 。
mysql_fetch_row() , mysql_row_seek() mysql_row_tell() 。
, mysql_free_result()。
25.2.13.1 ,“ mysql_query() ,mysql_store_result() NULL”.
戻り値
MYSQL_RES 。 , NULL。
エラー
,mysql_store_result() mysql_error() mysql_errno()。
· CR_COMMANDS_OUT_OF_SYNC
。
· CR_OUT_OF_MEMORY
。
· CR_SERVER_GONE_ERROR
MySQL 。
· CR_SERVER_LOST
, 。
· CR_UNKNOWN_ERROR
。
説明
。 mysql_store_result() , ,mysql_fetch_row() NULL。 mysql_use_result() , ,mysql_fetch_row() NULL。
mysql_num_fields(result) 。 mysql_fetch_row() , row[0] row[mysql_num_fields(result)-1], 。 NULL NULL 。
mysql_fetch_lengths() 。 NULL , 0。 , 。 NULL, NULL, 。
戻り値
MYSQL_ROW 。 , NULL。
エラー
, mysql_fetch_row() , 。
· CR_SERVER_LOST
, 。
· CR_UNKNOWN_ERROR
。
例:
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
}
printf("
");
}
説明
。 , , , strlen()。 , , , , Null ,strlen() 。
NULL , 0。 , mysql_fetch_row() 。
戻り値
( NULL )。 , NULL。
エラー
mysql_fetch_lengths() 。 mysql_fetch_row() , NULL。
例:
MYSQL_ROW row;
unsigned long *lengths;
unsigned int num_fields;
unsigned int i;
row = mysql_fetch_row(result);
if (row)
{
num_fields = mysql_num_fields(result);
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("Column %u is %lu bytes in length.
", i, lengths[i]);
}
}
説明
。
mysql_num_rows() mysql_store_result() mysql_use_result() 。 mysql_store_result(), mysql_num_rows()。 mysql_use_result(),mysql_num_rows() , 。
戻り値
。
エラー
。
説明
, MYSQL_FIELD 。 1 。
戻り値
MYSQL_FIELD 。
エラー
。
例:
unsigned int num_fields;
unsigned int i;
MYSQL_FIELD *fields;
num_fields = mysql_num_fields(result);
fields = mysql_fetch_fields(result);
for(i = 0; i < num_fields; i++)
{
printf("Field %u is %s
", i, fields[i].name);
}
説明
mysql_store_result()、mysql_use_result()、mysql_list_dbs() 。 , mysql_free_result() 。
, 。
戻り値
。
エラー
。
MYSQL*パラメータを渡す代わりに、符号なし整数mysql_を使用します.field_count(MYSQL *mysql).
説明
。
, 。 mysql_store_result() mysql_use_result() NULL, ( )。 , mysql_field_count() mysql_store_result() 。 , , SELECT ( SELECT )。 , 。
25.2.13.1 ,“ mysql_query() ,mysql_store_result() NULL”。
戻り値
。
エラー
。
例:
MYSQL_RES *result;
unsigned int num_fields;
unsigned int num_rows;
if (mysql_query(&mysql,query_string))
{
// error
}
else // query succeeded, process any data returned by it
{
result = mysql_store_result(&mysql);
if (result) // there are rows
{
num_fields = mysql_num_fields(result);
// retrieve rows, then call mysql_free_result(result)
}
else // mysql_store_result() returned nothing; should it have?
{
if (mysql_errno(&mysql))
{
fprintf(stderr, "Error: %s
", mysql_error(&mysql));
}
else if (mysql_field_count(&mysql) == 0)
{
// query does not return data
// (it was not a SELECT)
num_rows = mysql_affected_rows(&mysql);
}
}
}
説明
, 。
戻り値
。
エラー
。
説明
, 。 。
mysql_init() 、 mysql_connect() mysql_real_connect() mysql_options()。
。Arg 。 , arg 。
可能なオプション値:
オプション
パラメトリックタイプ
機能
MYSQL_INIT_COMMAND
char *
MySQLサーバーに接続するときに実行するコマンド.再接続すると自動的に再実行されます.
MYSQL_OPT_COMPRESS
未使用
圧縮クライアント/サーバプロトコルの使用
MYSQL_OPT_CONNECT_TIMEOUT
unsigned int *
秒単位の接続タイムアウト.
MYSQL_OPT_GUESS_CONNECTION
未使用
libmysqldにリンクされたアプリケーションでは、ライブラリが組み込みサーバまたはリモートサーバを使用するかどうかを推測できます.「推測」は、ホスト名が設定されているがローカルホストではない場合、リモート・サーバが使用されることを示します.この動作はデフォルトの動作です.MYSQL_を使用可能OPT_USE_EMBEDDED_CONNECTIONとMYSQL_OPT_USE_REMOTE_CONNECTIONで上書きします.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
MYSQL_OPT_LOCAL_INFILE
セルへの任意のポインタ
ポインタが指定されていない場合、またはポインタが「unsigned int!=0」を指している場合、コマンドLOAD LOCAL INFILEが許可されます.
MYSQL_OPT_NAMED_PIPE
未使用
ネーミングパイプを使用してNTプラットフォーム上のMySQLサーバに接続します.
MYSQL_OPT_PROTOCOL
unsigned int *
使用するプロトコルのタイプ.mysqlです.hで定義したmysql_protocol_typeの列挙値の1つです.
MYSQL_OPT_READ_TIMEOUT
unsigned int *
サーバからの情報読み取りのタイムアウト(現在はWindowsプラットフォームのTCP/IP接続でのみ有効).
MYSQL_OPT_RECONNECT
my_bool *
接続が失われた場合は、サーバへの自動再接続を開始または禁止します.MySQL 5.0から.3から、デフォルトでは再接続が禁止されています.これは5.0です.13の新しいオプションは、再接続動作を明示的に設定する方法を提供します.
MYSQL_OPT_SET_CLIENT_IP
char *
libmysqldにリンクされたアプリケーション(認証サポート機能を備えたコンパイルされたlibmysqld)については、認証の目的で指定されたIPアドレス(文字列指定)から接続されているとみなされます.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
MYSQL_OPT_USE_EMBEDDED_CONNECTION
未使用
libmysqldにリンクされたアプリケーションでは、接続に対して組み込みサーバが強制的に使用されます.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
MYSQL_OPT_USE_REMOTE_CONNECTION
未使用
libmysqldにリンクされたアプリケーションでは、接続に対してリモートサーバが強制的に使用されます.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
MYSQL_OPT_USE_RESULT
未使用
このオプションは使用されません.
MYSQL_OPT_WRITE_TIMEOUT
unsigned int *
書き込みサーバのタイムアウト(現在はWindowsプラットフォームのTCP/IP接続のみ有効).
MYSQL_READ_DEFAULT_FILE
char *
myではなく名前付きオプションファイルからcnf読み取りオプション.
MYSQL_READ_DEFAULT_GROUP
char *
myからcnfまたはMYSQLでREAD_DEFAULT_FILEで指定したファイルの名前付きグループ読み込みオプション.
MYSQL_REPORT_DATA_TRUNCATION
my_bool *
MYSQL経由でBIND.Errorは、前処理文の場合、データ遮断エラーの通知を許可または禁止します(デフォルトでは禁止されています).
MYSQL_SECURE_AUTH
my_bool*
パスワードのミキシング機能をサポートしていないサーバーに接続するかどうか、MySQL 4.1.1以降では、パスワードミキシング機能が使用されています.
MYSQL_SET_CHARSET_DIR
char*
文字セット定義ファイルを含むディレクトリへのパス名.
MYSQL_SET_CHARSET_NAME
char*
デフォルトの文字セットとして使用される文字セットの名前.
MYSQL_SHARED_MEMORY_BASE_NAME
char*
サーバと通信する共有メモリオブジェクトとして名前を付けます.接続するmysqldサーバで使用するオプション「-shared-memory-base-name」と同じです.
MYSQLを使用している場合は注意READ_DEFAULT_FILEまたはMYSQL_READ_DEFAULT_GROUPは、クライアントグループを常に読み込みます.戻り値
成功した場合は0を返します.不明なオプションが使用されている場合は、0以外の値を返します.
例:
MYSQL mysql;
mysql_init(&mysql);
mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);
mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");
if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
{
fprintf(stderr, "Failed to connect to database: Error: %s
",
mysql_error(&mysql));
}