为了账号安全,请及时绑定邮箱和手机立即绑定

采用这种连接的方式进行插入,还是会遇到erro 1064 syntax error的提示。

采用这种连接的方式进行插入,还是会遇到erro 1064 syntax error的提示。

汪汪一只猫 2023-04-05 17:13:20
由于在数据表中定义了一个字段是varbinary,需要利用C API进行插入操作,但是试了N种方法均不行,下面列举一下我们使用过的方式:(bina为char数组,也即待插入的二进制数据,其中可能含有各种字符;)1.sprintf(str,"INSERT INTO test(id,test)VALUES(73,‘%s’)",bina);int res=mysql_query(conn_ptr,str);这种方式经常出现错误,是因为使用了字符串的格式化符%s,当作字符串进行插入,但是遇到bina中的\0字符就认为结束,故该方式不行;2.char *test="INSERT INTO test(id,test)VALUES(12,'"; strcpy(str,test); mysql_real_escape_string(conn_ptr,str+37,bina,5); strcat(str,"')");int res=mysql_real_query(conn_ptr,str,47);请问大家有没有什么好的解决方案?
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

把bina做一次编码,比如bin2hex

#include <math.h>#include <string.h>#include <stdio.h>#include <stdlib.h>#include <conio.h>
 #define FirstDigit 48
 void BinToHex(char* BinData, char* HexData){   long int Number = 0;   int BinLength = strlen(BinData); 
   for(int i=0; i<BinLength; i++)
   {
      Number += ((BinData[BinLength - i - 1] - FirstDigit) * pow(2, i));
   } 
   ltoa(Number, HexData, 16);
} 
int main(){   char* BinBuffer = "11110101";   char HexBuffer[256];


查看完整回答
反对 回复 2023-04-07
  • 1 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信