obj是一个结构体对象
struct blob
{
   int a;
   int b;
}obj = {1,2};blobtest 是表的名字;表有两个属性,第一个是integer,第二个是blob
         unsigned short current_length = 0;
const char * head= "INSERT INTO blobtest VALUES(6,";
const char * tail= ")"; char sql[128] = {0};//最终的sql语句
memcpy(sql, head, strlen(head));
current_length += strlen(head); mysql_real_escape_string(handle, sql+current_length, (char *)&obj, sizeof(obj));
current_length += sizeof(obj); memcpy(sql+current_length, tail, strlen(tail));
current_length += strlen(tail); sql[current_length] = '\0'; mysql_real_query(handle, sql, current_length);

解决方案 »

  1.   

    就是说语句中有语法错误
    我改了一下:
    int len = mysql_real_escape_string(handle, sql+current_length, (char *)&obj, sizeof(obj));
    current_length += len;gdb调试发现sql语句是:INSERT INTO blobtest VALUES(6,\001\\0\\0\\0bcde)
      

  2.   

    INSERT INTO blobtest VALUES(6,'\001\\0\\0\\0bcde')引号哪去了? 你的SQL语句生成的不对,    const char * head= "INSERT INTO blobtest VALUES(6,'";
        const char * tail= "')";
      

  3.   

    check the manual that corresponds to your MySQL server version for the right syntax to use near '\0\0\0bcde)' at line 1
      

  4.   


    我发帖时故意去掉了
    我的结构体obj是
    struct
    {
    int a;
    char b; char c; char d; char e;
    } obj = {1, 'b','c','d','e'};
    语句是这样的“INSERT INTO blobtest VALUES(6,\001\\0\\0\\0bcde);”