0
#include <iostream>
#include <stdlib.h>
#include <sstream>
#include "sqlite3.h"
#include <stdio.h>

const char dbName[] = {"/trial.sqlite"};

std::string quoteSql( std::string &s );

int main(){


std::string szSQL;
std::string tableName;

tableName = "Nodes";
int result;

const char *pzTest;

sqlite3_stmt *statement;

sqlite3 *db;

std::string nodename;

int count;

nodename = "KMLB1";

szSQL = "SELECT COUNT(*) FROM Nodes WHERE NODENAME = ?";

result = sqlite3_open(dbName,&db);
if(result){
    sqlite3_close(db);
    return 0;
}

result = sqlite3_prepare_v2(db,szSQL.c_str(),strlen(szSQL.c_str()),&statement,&pzTest);
if(result){
    sqlite3_close(db);
    return 0;
}

sqlite3_bind_text(statement,1,nodename.c_str(),-1,0);

result = sqlite3_step(statement);
if(result){
    sqlite3_close(db);
    return 0;
}
count = sqlite3_column_int(statement, 0);
if(count == 0){
    sqlite3_close(db);
    return 0;
}

sqlite3_finalize(statement);
sqlite3_close(db);


return 0;
}

std::string quoteSql( std::string &s ) {
return std::string("'") + s + std::string("'");
}

我在上面编写了一个实验性和基本的 C++ SQLite 控制台应用程序。编译阶段没有问题,但我在 sqlite_prepare_v2() 函数的行上得到 SQLITE_ERROR 状态代码。我什至无法找到问题的原因。

此外,我想知道,如果我可以通过此代码获得 NODENAME 为 KMLB1 的行数。

4

1 回答 1

0

用于sqlite3_errmsg找出问题所在。

请注意,返回值SQLITE_ROWSQLITE_DONEofsqlite3_step不为零,并且sqlite3_column_int不会返回错误代码。

于 2012-10-31T15:45:50.703 回答