【问题标题】:Why does the sqlite3pp sample behave this way?为什么 sqlite3pp 示例会有这种行为?
【发布时间】:2011-07-24 00:19:43
【问题描述】:

所以我尝试简单的sqlite3pp修改了一下code

#include <iostream>
#include <sqlite3pp.h>

using namespace std;

int main(int argc, char* argv[])
{
    try {
        sqlite3pp::database db("test.db");

        {
            db.execute("CREATE TABLE IF NOT EXISTS users ( email varchar(65) primary key, pass varchar(65))");
            db.execute("INSERT INTO users (email, pass) VALUES ('AAAA', '1234')");
        }

        {
            sqlite3pp::transaction xct(db);

            sqlite3pp::command cmd(db, "INSERT INTO users (email, pass) VALUES (?, ?)");

            cout << cmd.bind(1, "BBBB") << endl;
            cout << cmd.bind(2, "1234") << endl;
            cout << cmd.execute() << endl;

            cout << cmd.reset() << endl;

            cmd.binder() << "CCCC" << "1234";

            cout << cmd.execute() << endl;

            xct.commit();
        }

        {
            sqlite3pp::transaction xct(db, true);

            sqlite3pp::command cmd(db, "INSERT INTO users (email, pass) VALUES (:name, :name)");

            cout << cmd.bind(":name", "DDDD") << endl;

            cout << cmd.execute() << endl;
        }
    }
    catch (exception& ex) {
        cout << ex.what() << endl;
    }
    cin.get();

}

第一次给出这样的输出:

0
0
0
0
0
0
0

当我执行它时,第二次和转发:

0
0
1
19
1
column email is not unique

为什么它不早于 5 号 (SQL error codes) 抛出任何错误?

【问题讨论】:

    标签: c++ sql sqlite


    【解决方案1】:

    快速浏览了一下 sqlite3pp 的实现,似乎东西往往只是返回错误代码,并希望您检查它们;看起来它可能是引发异常的事务的析构函数,这就是为什么您在执行此操作时会看到错误消息的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多