[英]SQL Statement in ODBC
我正在用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'
中將引號引起來。
最后,如果字符串變量可以包含單引號,則必須將它們轉義為兩個單引號。
您有兩種選擇:
sprintf
來構建SQL字符串,如Paul Ogilvie在其答案中所示。 如果您重復使用不同值多次重復同一條語句(如鏈接所示),則准備好的語句可以為您帶來一些性能。 它們還可以防止SQL注入攻擊(無論如何都可以),但是無論如何,您都應該清理輸入。 權衡是,准備好的語句需要更多的編碼工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.