Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"delete from table" doesn't delete table?

Tags:

c++

sql

sqlite

I create "database.db" and everything goes ok but why wouldn't it delete the table at the end? Everytime i run it, i get "table already exist" error message on creating the table.

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;
}

Also, can the primary keys be auto-generated following the last greater key existing in database?

like image 454
user963241 Avatar asked Dec 22 '22 19:12

user963241


1 Answers

You need to use drop table. delete deletes rows in the table.

rc = sqlite3_exec(db, "drop table test", NULL, NULL, &zErr);

SQLite will auto-increment an integer field declared as the primary key. See here.

like image 185
moinudin Avatar answered Dec 24 '22 08:12

moinudin