I needed a quick excercise this morning. Never used table_info() before.
table_info() will be faster than doing "select *" I would think in most all
cases.
#include <iostream>
#include <sstream>
#include <sstream>
#include "sqlite3.h"
using namespace std;
bool dbExists(string dbName) {
sqlite3 *db;
int rc = sqlite3_open_v2(dbName.c_str(), &db, SQLITE_OPEN_READONLY, NULL);
if(rc != SQLITE_OK) {
return false;
}
rc = sqlite3_close(db);
if(rc != SQLITE_OK) {
cerr << "Error on sqlite3_close??" << endl;
}
return true;
}
bool tableExists(string dbName, string table) {
sqlite3 *db;
int rc = sqlite3_open_v2(dbName.c_str(), &db, SQLITE_OPEN_READONLY, NULL);
if(rc != SQLITE_OK) {
return false; // db doesn't exist
}
sqlite3_stmt *stmt;
stringstream ss;
ss << "pragma table_info(" << table << ");";
rc = sqlite3_prepare_v2( db, ss.str().c_str() , -1, &stmt, NULL );
if(rc != SQLITE_OK) {
cerr << "Error on sqlite3_prepare_v2: " << sqlite3_errmsg(db) << endl;
}
rc = sqlite3_step(stmt);
if(rc != SQLITE_DONE && rc != SQLITE_ROW) {
cerr << "Error on sqlite3_step: " << sqlite3_errmsg(db) << endl;
}
bool myReturn = false;
if (sqlite3_data_count(stmt) > 0) {
myReturn = true;
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return myReturn;
}
Michael D. Black
Senior Scientist
Advanced Analytics Directorate
Advanced GEOINT Solutions Operating Unit
Northrop Grumman Information Systems
From: [email protected] [[email protected]] on
behalf of Arbol One [[email protected]]
Sent: Friday, July 20, 2012 5:51 AM
To: SqLite
Subject: EXT :[sqlite] database AND table already exist?
Is there a way to find out if a certain database AND table already exist?
In my C++ program I would like to query SQLite3 to find out if a database
already exists and also if a particular table exists in that database. Is
there a way to do this?
I am using std i/o methods to check for the existing SQLite3 file containing
the database, but I don't have a way to find out if the table in question
does in fact exist.
TIA
Freedom of speech does not translate to freedom of insulting
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users