2011-07-24 20 views
1

だから私は、単純なsqlite3ppビットcode変更してみてください:それは、このような出力を提供しますsqlite3ppサンプルがこのように動作するのはなぜですか?

#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 

目と2回目に、私はそれを実行したときに転送:

0 
0 
1 
19 
1 
column email is not unique 

なぜ5th(SQL error codes)より早くエラーがスローされないのですか?

答えて

2

sqlite3ppの実装をすばやく見ていたところ、エラーコードを返す傾向があり、チェックすることが期待されます。例外をスローしているトランザクションのデストラクタになる可能性があるように見えます。そのため、その時点でエラーメッセージが表示されます。

関連する問題