Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


23.8.7.34 mysql_hex_string()

unsigned long mysql_hex_string(char *to, const char *from, unsigned long length)

説明

この関数は、SQL ステートメントで使用できる正当な SQL 文字列を作成するために使われます。セクション9.1.1「文字列リテラル」を参照してください。

from 内の文字列は、各文字が 2 桁の 16 進数としてエンコードされた 16 進形式にエンコードされます。結果は to に置かれ、終端の NULL バイトが付加されます。

from によって指示される文字列は、length バイトの長さである必要があります。to バッファーを少なくとも length*2+1 バイト長になるように割り当てる必要があります。mysql_hex_string() が戻ると、to の内容は NULL 終端文字列になっています。戻り値は、終端の NULL 文字を含まない、エンコードされた文字列の長さです。

戻り値は 0xvalue または X'value' 形式を使用して、SQL ステートメントに配置できます。ただし、戻り値には、0x または X'...' は含まれません。呼び出し元は、要求されたものをなんでも提供する必要があります。

char query[1000],*end;

end = strmov(query,"INSERT INTO test_table values(");
end = strmov(end,"0x");
end += mysql_hex_string(end,"What is this",12);
end = strmov(end,",0x");
end += mysql_hex_string(end,"binary data: \0\r\n",16);
*end++ = ')';

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))
{
   fprintf(stderr, "Failed to insert row, Error: %s\n",
           mysql_error(&mysql));
}

例で使用している strmov() 関数は、libmysqlclient ライブラリに含まれ、strcpy() のように機能しますが、最初のパラメータの終端の NULL へのポインタを返します。

戻り値

to に置かれた、終端の NULL 文字を含まない値の長さ。

エラー

なし。


User Comments
  Posted by maxi ng on August 31, 2006
Inside your description:
The return value is the length of the encoded string, not including the terminating null character.<--This says the return value of the function is the "length of the encoded string"

Inside the next paragraph:
The return value can be placed into an SQL statement using either 0xvalue or X'value' format.<--Is this return value the same one as which mention in the preceding paragraph? I am being confused. If it is the same, that means my SQL statment will be something like "insert blahblahblah value (0xlengthbeingreturn). Is this what you mean? Or what you really saying is 0xToString?


Sign Up Login You must be logged in to post a comment.