0

我现在正在使用 sqlite3。我想在 SELECT 中使用变量barcode_prog。我有带有表 PT 和列 BarCode 和 Name 的数据库 sql_db 文件。但我想在 SELECT 中使用任何字符串,它将在程序中设置。我在代码中的评论中问我的问题。请帮忙 :)

#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;
}
4

1 回答 1

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);
//...
于 2013-03-16T12:22:10.723 回答