2013-03-16 19 views
0

我正在使用sqlite3。 我想在SELECT中使用變量barcode_prog。 我有文件的數據庫sql_db與表PT和欄BarCode和名稱。 但我想在SELECT中使用任何字符串,它將在程序中設置。 我在代碼中評論我的問題。 幫助,請:)在sql中使用C++代碼中的變量

#include "stdafx.h" 
#include "sqlite3.h" 
#include <iostream> 

int data (void *unused, int field_num, char **value, char **field_name) 
{ 
    for (int i = 0; i < field_num; i++) 
    { 
     std::cout << value[i] << " = " << field_name[i] << std::endl; 
    } 
    return 0; 
} 

int main() 
{ 
    int error; 
    char *barcode_prog = "4813538002837"; 
    char *errmsg; 
    sqlite3 *db; 
    char *sql = "SELECT * FROM PT WHERE ?"; // here i want to use barcode_prog like  "SELECT * FROM PT WHERE BarCode = barcode_prog" 
    error = sqlite3_open("sql_db", &db); 
    if (error != SQLITE_OK) 
    { 
     std::cout << "Cannot read database" << sqlite3_errmsg(db) << std::endl; 
    } 

    error = sqlite3_exec(db, sql, data, 0, &errmsg); 

    if (error != SQLITE_OK) 
    { 
     std::cout << "ERROR!" << errmsg << std::endl; 
     sqlite3_free(errmsg); 
    } 

    system ("pause"); 
    sqlite3_close(db); 
    return 0; 
} 

回答

1

可能有幾種方法來做到這一點。我認爲最簡單的就是使用std :: stringstream。

// your code 
std::stringstream stream; 
stream << "SELECT * FROM PT WHERE BarCode = " << barcode_prog. 
// ... 
error = sqlite3_exec(db, stream.str().c_str(), data, 0, &errmsg); 
//... 
+0

你好。你能再寫一個嗎? – 2013-03-22 13:31:40