"从表中删除"不删除表?

use*_*241 4 c++ sql sqlite

我创建"database.db",一切顺利,但为什么不在最后删除表?每次我运行它,我在创建表时得到"表已存在"错误消息.

int main()
{
 sqlite3 *db; //Database Handle
 char *zErr;
 int rc;
 char *sql;

 rc = sqlite3_open("database.db", &db);

 if(rc)
 {
  cout << "Can't open database: " << sqlite3_errmsg(db) << endl;;
  sqlite3_close(db);
  exit(1);
 }

 sql = "create table test(PID int primary key, Name text)"; //sql query

 rc = sqlite3_exec(db, sql, NULL, NULL, &zErr); //execute sql statement

 if(rc != SQLITE_OK)
 {
  if (zErr != NULL)
  {
   cout << "SQL error: " << zErr << endl;
   sqlite3_free(zErr);
  }
 }
 else
 {
  sql = "insert into test values (1,'John')";
  rc = sqlite3_exec(db, sql, NULL, NULL, &zErr);

  sql = "insert into test values (2,'Smith')";
  rc = sqlite3_exec(db, sql, NULL, NULL, &zErr);
 }



    //delete the table on exit.

 rc = sqlite3_exec(db, "delete from test", NULL, NULL, &zErr);

 sqlite3_close(db);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

此外,主键是否可以在数据库中存在的最后一个更大的键之后自动生成?

mar*_*cog 7

你需要使用drop table.delete删除表中的行.

rc = sqlite3_exec(db, "drop table test", NULL, NULL, &zErr);
Run Code Online (Sandbox Code Playgroud)

SQLite将自动递增声明为主键的整数字段.看到这里.