C++ sqlite3赢得';我不能再工作了
我的Sqlite连接器在我第一次尝试插入行时工作得很好,但是在它关闭并且我再次运行程序之后,它就根本不工作了 这是我的构造函数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 = &
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");