我正在用C编写一个ODBC应用程序!
我的数据库中有一个表,我要用一些变量来填充它:Var1,Var2。。。是一些函数的输出。
问题是:在SQLExecDirect函数中,我应该如何将变量传递给SQL语句(StatementText)?
SQLExecDirect(hStmt, (SQLCHAR *)"INSERT INTO Table1 values (Var1, Var2, ...)", SQL_NTS);
最佳答案
在C中的SQL中,通过在缓冲区中打印(格式化)完整的SQL语句来创建它。因此,如果要将变量的值插入表中,可以将它们的值打印到缓冲区,如:
char szSQL[2048];
sprintf (szSQL, "INSERT INTO %s values('%s', %d,'%s');", szTableName, strVar1, intVar, strVar2);
SQLExecDirect(hStmt, szSQL, SQL_NTS);
注意字符串变量周围的单引号,注意整型变量周围没有引号。请注意,这是表的要求,而不是C的要求。如果表中的整数变量定义为字符串字段,则还必须在SQL语句中的变量周围加引号,
'%d'
。最后,如果字符串变量可以包含单引号,则必须将其转义为两个单引号。
关于sql - ODBC中的SQL语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33083469/