ODBC 中的 SQL 语句

标签 sql c odbc hana

我正在用 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);

注意字符串变量周围的单引号,并注意整数变量周围没有引号。请注意,这是您的 TABLE 的要求,而不是 C 的要求。如果您的表中的整数变量定义为字符串字段,那么您还必须在 SQL 语句中为该变量加上引号 '%d'.

最后,如果字符串变量可以包含单引号,那么您必须将它们转义为两个单引号。

关于ODBC 中的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33083469/

相关文章:

sql - Postgresql - 列数未知的数据透视表

c - 如何改进寻找孪生素数

c - Sprite Packing C 应用程序中的 Sprite 对齐

c# - 如何仅使用一个 Controller 动态检索表?

excel - SSRS : Error while querying data from an Excel file (through ODBC)

sql - 如何从 SQL 表中删除相反的行

php - 如何将登录成员(member)下的成员(member)表与玩家表合并?

c - 以下代码总是卡住并且窗口挂起

.net - Oracle NUMBER 问题 : Decimal to Int64 cast

sql - Where 子句中的数字通配符