我在 visual studio 2010 中使用 mysql 连接器并从数据库中提取数据。还成功插入数据作为值。但是无法插入带有变量的数据。需要帮助,请。
这个有效。
mysql_query(connect,"INSERT INTO input VALUES(111,'Bangladesh','Khulna','Male','Muhammad Ashikuzzaman KUET','b+')");
但这不起作用。
str="Muhammad Ashikuzzaman KUET";
mysql_query(connect,"INSERT INTO input VALUES(111,'Bangladesh','Khulna','Male','@str','b+')");
or
mysql_query(connect,"INSERT INTO input VALUES(111,'Bangladesh','Khulna','Male',@str,'b+')");
请提出解决方案。
最佳答案
您必须在调用 mysql_query()
之前创建字符串:
char statement[512], *str = "Muhammad Ashikuzzaman KUET";
snprintf(statement, sizeof statement, "INSERT INTO input VALUES(111,'Bangladesh','Khulna','Male','%s','b+')", str);
mysql_query(connect, statement);
此外,在创建这些查询字符串时要小心。如果您不能确定结果字符串的长度,请不要使用像 sprintf()
这样的函数。不要越过内存段的边界。
编辑
为预防起见,如果字符串通常来自任意来源,您可以另外使用 mysql_real_escape_string()
:
int insertData(MYSQL *connect, char *str, int str_len) {
if (str_len < 0) {
str_len = strlen(str);
}
char esc[2 * str_len + 1];
unsigned long esclen = mysql_real_escape_string(connect, esc, str, str_len);
char statement[512];
snprintf(statement, sizeof statement, "INSERT INTO input VALUES(111,'Bangladesh','Khulna','Male','%s','b+')", esc);
return mysql_query(connect, statement);
}
同样在这里,我假设您的输入字符串足够小以适合 512 个字符的字符串。实际上,它不会起作用。所以根据输入字符串的长度加上一些额外的长度来声明statement
长度变量以适应查询字符串。
关于mysql - 使用 visual studio CLR/C 在 mysql 中插入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25893917/