Populate/insert 查询中的值
Populate/insert values in query
我是 C 的新手,我正在尝试使用 sqlite3 db 制作简单的程序。
我有这样的查询:
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS) " \
"VALUES (1, 'Paul', 32, 'California' ); " \
我在 char* 变量中有值,是否可以像在 printf 上那样使用 %s 例如:
sql = somefunction("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS) " \
"VALUES (%d, '%s', %d, '%s');", 1, 'Paul', 32, 'California');
如果那不可能,最好的方法是什么?
谢谢!
Create a buffer and fill it with the string using sprintf.
Here's a very generic example:
int main ()
{
char buffer [50];
int n, a=5, b=3;
n=sprintf (buffer, "%d plus %d is %d", a, b, a+b);
printf ("[%s] is a string %d chars long\n",buffer,n);
return 0;
}
Output:
[5 plus 3 is 8] is a string 13 chars long
sprintf()
看起来适合您的问题(在 C89 中引入)。
现在简单地做这样的事情:
sprintf(sql, "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS) "
"VALUES (%d, '%s', %d, '%s');", 1, "Paul", 32, "California");
要防止缓冲区溢出,请使用 snprintf()
(在 C99 中引入)。
我是 C 的新手,我正在尝试使用 sqlite3 db 制作简单的程序。
我有这样的查询:
sql = "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS) " \
"VALUES (1, 'Paul', 32, 'California' ); " \
我在 char* 变量中有值,是否可以像在 printf 上那样使用 %s 例如:
sql = somefunction("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS) " \
"VALUES (%d, '%s', %d, '%s');", 1, 'Paul', 32, 'California');
如果那不可能,最好的方法是什么?
谢谢!
Create a buffer and fill it with the string using sprintf. Here's a very generic example: int main () { char buffer [50]; int n, a=5, b=3; n=sprintf (buffer, "%d plus %d is %d", a, b, a+b); printf ("[%s] is a string %d chars long\n",buffer,n); return 0; } Output: [5 plus 3 is 8] is a string 13 chars long
sprintf()
看起来适合您的问题(在 C89 中引入)。
现在简单地做这样的事情:
sprintf(sql, "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS) "
"VALUES (%d, '%s', %d, '%s');", 1, "Paul", 32, "California");
要防止缓冲区溢出,请使用 snprintf()
(在 C99 中引入)。