我们可以在C程序的SQL select查询中使用动态变量吗?

我们可以在C程序的SQL select查询中使用动态变量吗?,sql,c,Sql,C,我实际上想在C程序中执行SQL查询,将SELECTquery中的变量作为存储在字符串变量中的值 例如: void fetch_data(char var[]) { char COL1[]=var, COL2[]="Address", COL3[]="Name"; SELECT COL1, COL2, COL3 FROM TABLE WHERE COL4='some value'; } 如您所见,我希望我的代码具有灵活性,以便根据变量var拥有不同的列名,该变量是fetch\u

我实际上想在C程序中执行SQL查询,将
SELECT
query中的变量作为存储在字符串变量中的值

例如:

void fetch_data(char var[])
{
    char COL1[]=var, COL2[]="Address", COL3[]="Name";
    SELECT COL1, COL2, COL3 FROM TABLE WHERE COL4='some value';
}
如您所见,我希望我的代码具有灵活性,以便根据变量
var
拥有不同的列名,该变量是
fetch\u data
函数的参数

请告诉我这在C语言中是否可行

如果上述方法不可行,我想到了另一种方法:我们是否可以将整个SQL语句存储在一个字符串中并执行它,这样我就可以根据在函数
fetch_data()
中获得的参数值随时修改这个字符串

下面的代码将使我的观点更加明确,我想要什么:

void fetch_data(char var[])
{
    char COL1[]="Name", COL2[]="Address", COL3[]=var;
    char qry1[]="SELECT ", qry2[]=var, qry3=" COL2, COL3 FROM TABLE WHERE COL4='some value';";
    char str[]=strcat(qry1,qry2);
    char query[]=strcat(str,qry3);
    //now query will be having "select (value of var), COL2, COL3 FROM TABLE WHERE COL4='some value';
}
在上面的代码中,我可以执行存储在字符串
query
中的查询吗


请告诉我这两种方法中是否有任何一种可以工作,或者是否可以通过“C”中的任何其他方法来实现。

第二种方法肯定会工作,您只需要小心处理字符串

事实上,您可以使用以下方法简化它:

如果查询需要更具动态性,即
“某些值”
也需要来自变量,则可以添加其他格式说明符:

snprintf(queryStr, MAX_QUERY_LENGTH,
         "SELECT %s, COL2, COL3 FROM TABLE WHERE COL4='%s';", var, someValue);
一旦你准备好了这样一个查询,你如何使用它取决于你的工具链。你在用什么?如果是这样,则可以使用ODBC调用来处理查询,并使用ODBC驱动程序来管理与数据库的连接。否则,您使用的是哪个数据库,提供给您的API是什么?例如,MySQL提供了一个相当大的数据库,oracle提供了一个不同的数据库,SQL Server提供了另一个数据库

对于第一个选项,您需要使用a在您的C代码中使用类似原始SQL语句的东西,并且语法将取决于您使用的工具


我还应该补充一点,您不能使用如下语句复制非文本C字符串:
char COL1[]=var。相反,您需要使用字符串库方法,如
strncpy

谢谢。还请告诉我如何在C程序中执行以字符串形式存储的查询。如何执行取决于您的数据库驱动程序。但是一般来说,您不应该修改查询字符串,它确实不安全。您应该使用一个函数/一组函数,允许您将占位符放置在不同部分的位置,然后将实际值作为参数传递。
snprintf(queryStr, MAX_QUERY_LENGTH,
         "SELECT %s, COL2, COL3 FROM TABLE WHERE COL4='%s';", var, someValue);