my_bool mysql_send_long_data(MYSQL_STMT *stmt,
unsigned int parameter_number, const char *data, unsigned long
length)
説明
アプリケーションはこの関数を使用して、パラメータデータを個別に(または
``切り分けて'')サーバに送信できます。この関数を複数回呼び出すことによって、TEXT
または BLOB
のどちらかのデータ型のカラムの文字データ値またはバイナリデータ値を複数回に分けて送信することができます。
parameter_number
は、データを関連付けるパラメータを示す番号です。パラメータの番号は
0 から始まります。data
は送信データを含むバッファへのポインタを、length
はバッファ内のデータのバイト数を示します。
戻り値
データをサーバに正常に送信できた場合は 0。エラーが発生した場合は 0 以外。
エラー
CR_INVALID_PARAMETER_NO
無効なパラメータ番号が指定された。
CR_COMMANDS_OUT_OF_SYNC
コマンドが正しい順序で実行されなかった。
CR_SERVER_GONE_ERROR
MySQL サーバがいなくなった。
CR_OUT_OF_MEMORY
メモリが不足していた。
CR_UNKNOWN_ERROR
不明なエラーが発生した。
例
以下の例では、TEXT
型カラムのデータを切り分けて送信する方法を示します。ここでは、データ値
'MySQL - The most popular open source
database'
を text_column
カラムに挿入します。mysql
変数は有効な接続ハンドルとします。
#define INSERT_QUERY "INSERT INTO test_long_data(text_column) VALUES(?)" MYSQL_BIND bind[1]; long length; if (!mysql_prepare(mysql, INSERT_QUERY, strlen(INSERT_QUERY)) { fprintf(stderr, "\n prepare failed"); fprintf(stderr, "\n %s", mysql_error(mysql)); exit(0); } memset(bind, 0, sizeof(bind)); bind[0].buffer_type= MYSQL_TYPE_STRING; bind[0].length= &length; bind[0].is_null= 0; /* Bind the buffers */ if (mysql_bind_param(stmt, bind)) { fprintf(stderr, "\n param bind failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Supply data in chunks to server */ if (!mysql_send_long_data(stmt,0,"MySQL",5)) { fprintf(stderr, "\n send_long_data failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Supply the next piece of data */ if (mysql_send_long_data(stmt,0," - The most popular open source database",40)) { fprintf(stderr, "\n send_long_data failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); } /* Now, execute the query */ if (mysql_execute(stmt)) { fprintf(stderr, "\n mysql_execute failed"); fprintf(stderr, "\n %s", mysql_stmt_error(stmt)); exit(0); }
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.