C++ sqlite3赢得';我不能再工作了

C++ sqlite3赢得';我不能再工作了,c++,sqlite,C++,Sqlite,我的Sqlite连接器在我第一次尝试插入行时工作得很好,但是在它关闭并且我再次运行程序之后,它就根本不工作了 这是我的构造函数 Sqldatabase::Sqldatabase() { open_connection("Database.db"); sqlite3_stmt *statement; std::string sql = "SELECT id FROM articles ORDER BY id DESC LIMIT 1"; char *query = &

我的Sqlite连接器在我第一次尝试插入行时工作得很好,但是在它关闭并且我再次运行程序之后,它就根本不工作了

这是我的构造函数

  Sqldatabase::Sqldatabase() {
  open_connection("Database.db");

  sqlite3_stmt *statement;
  std::string sql = "SELECT id FROM articles ORDER BY id DESC LIMIT 1";
  char *query = &sql[0];
  if(sqlite3_prepare_v2(db, query, -1, &statement, 0) == SQLITE_OK && sqlite3_step(statement) == SQLITE_ROW) {
    article_counter = sqlite3_column_int(statement, 0) + 1;
  } else {
    article_counter = 1;
  }
}
这是我准备好的报表方法

bool Sqldatabase::prepareStatement(std::string sql) {
  char *query = &sql[0];
  sqlite3_stmt *statement;
  int result;

  if (sqlite3_prepare_v2(db, query, sql.size(), &statement, 0) == SQLITE_OK) {
    result = sqlite3_step(statement);
    std::cout << sql << '\n';
    sqlite3_finalize(statement);
    if(result == SQLITE_DONE) {
       return true;
     }
  }
  std::cout << "SQL failed: " << sql << '\n';
  return false;
}
bool-Sqldatabase::prepareStatement(std::string-sql){
char*query=&sql[0];
sqlite3_stmt*语句;
int结果;
if(sqlite3\u prepare\u v2(db,query,sql.size(),&语句,0)==SQLITE\u OK){
结果=sqlite3_步骤(语句);

std::cout啊,您正在尝试创建具有相同id的新记录。id通常是唯一的。请尝试:

db.create_ART(2, "Chill day", "Peter", "Sunday afternoon is pretty chill");

复制粘贴编程的一个危害。我也这么认为,但该id是支持插入文章的新闻组的id。第一个INSERT语句根本没有使用ng_id:/所有SQL语句似乎都失败(更新、删除、插入),但select语句仍然有效。好的,您确定DB没有在id列中强制执行唯一的条目吗?是的,但即使不同的id也不会奇怪地起作用。create_ART的两行正在新闻组1中创建两篇新文章。article_计数器自己跟踪文章id。
Sqldatabase db;

int main(int argc, char* argv[]){
    std::cout << "-----Test of Memdatabase, Newsgroup and Article classes-----" << std::endl;
    db = Sqldatabase();

    db.create_ART(1, "Happy day", "John", "Sunday afternoon is pretty chill");
    db.create_ART(1, "Chill day", "Peter", "Sunday afternoon is pretty chill");

}
db.create_ART(2, "Chill day", "Peter", "Sunday afternoon is pretty chill");