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_ROWおよびSQLITE_DONEの戻り値sqlite3_stepはゼロでsqlite3_column_intはなく、エラー コードを返さないことに注意してください。

于 2012-10-31T15:45:50.703 に答える