namespace jme {
class Runner : public Gtk::Window {
private:
jme::Exception* e; // Exception handler
sqlite3 *db; // Data Base
sqlite3_stmt* stmt; // SQL statement
Glib::ustring dbName; // db name
Glib::ustring sName; // my name
Glib::ustring sAddress; // my address
Glib::ustring vfs; // MSWIN Identifier
int rc; // return code
int age; // my age
// SQL statement
Glib::ustring dbdata;
Glib::ustring create_table;
public:
Runner();
~Runner();
void OpenDB();
void CreateTable();
void AddData();
};
}
void jme::Runner::CreateTable(){
rc = sqlite3_prepare_v2(
db, /* Database handle */
create_table.c_str() , /* SQL statement, UTF-8 encoded */
create_table.length(), /* Maximum length of zSql in bytes. */
&stmt, /* OUT: Statement handle */
NULL /* OUT: Pointer to unused portion of zSql */
);
if(rc != SQLITE_OK) {
sqlite3_close(db);
std::cout << "error prepare_v2: " << rc << std::endl;
exit(-2);
}
rc = sqlite3_step(stmt);
if(rc != SQLITE_DONE) {
sqlite3_close(db);
std::cout << "error sqlite3_step: " << rc << std::endl;
exit(-3);
}
sqlite3_finalize(stmt);
}
void jme::Runner::AddData(){
rc = sqlite3_prepare_v2(
db, /* Database handle */
dbdata.c_str() , /* SQL statement, UTF-8 encoded */
dbdata.length(), /* Maximum length of zSql in bytes. */
&stmt, /* OUT: Statement handle */
NULL /* OUT: Pointer to unused portion of zSql */
);
if(rc != SQLITE_OK) {
....
}
rc = sqlite3_step(stmt);
if(rc != SQLITE_DONE) {
....
}
sqlite3_finalize(stmt);
}
void jme::Runner::OpenDB() {
rc = sqlite3_open_v2(dbName.c_str(),
&db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
NULL);
if(rc != SQLITE_OK) {
....
}
jme::Runner::Runner() {
dbName = "sqliteTest.sql";
sName = "ArbolOne";
sAddress = "1 Parkway Rd";
vfs = "win32";
age = 22;
dbdata = "INSERT INTO friend VALUES('Jamiil', '49 New Bridge', '49')";
create_table = "CREATE TABLE friend (name TEXT, address TEXT, age INT)";
try {
jme::gnu_io f;
f.deleteFile(dbName);
} catch(jme::Exception e) {
std::cout << e.what() << std::endl;
}
OpenDB();
CreateTable();
AddData();
}
jme::Runner::~Runner(){
sqlite3_close(db);
cout << "Good bye!" << endl;
}
int main(int argc, char *argv[]) {
try {
Gtk::Main kit(argc, argv);
jme::Runner dbtest;
Gtk::Main::run(dbtest);
} catch(jme::Exception& x) {
x.Display();
}
return 0;
}
This is what I have done so far, and following your advice I hade added
'sqlite3_finalize(stmt)' each time I am done with it. Also, I have downloaded
and installed 'SQLight Designer' and when opening the database file, I have
just created, all that I can see is the words: SQLite format 3.
Come on you folk, you have more experience than me using SQLite, pich in!.
What else do I need to do?
TIA
void jme::Runner::CreateTable(){
rc = sqlite3_prepare_v2(
db, /* Database handle */
create_table.c_str() , /* SQL statement, UTF-8 encoded */
create_table.length(), /* Maximum length of zSql in bytes. */
&stmt, /* OUT: Statement handle */
NULL /* OUT: Pointer to unused portion of zSql */
);
if(rc != SQLITE_OK) {
sqlite3_close(db);
std::cout << "error prepare_v2: " << rc << std::endl;
exit(-2);
}
rc = sqlite3_step(stmt);
if(rc != SQLITE_DONE) {
sqlite3_close(db);
std::cout << "error sqlite3_step: " << rc << std::endl;
exit(-3);
}
sqlite3_finalize(stmt);
}
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users