Just as a sanity check your code does work OK.  I made it a standalone program.

#include <iostream>
#include "sqlite3.h"
using namespace std;
class mySQLite3Class {
private:
  //SQLite3
  sqlite3* db; //SQLite3
  string dbName; // Database name
  string apstr; // All Purpose String
  string sql_param_tblName; // Databese table Name parameters
  string stmtName;          // SQL statement name
public:
  void createDB();
  void create_tblName();
  void createDatabase(const string& s);
  void createTable(const string& s);
  mySQLite3Class(const string& s) {
    createDatabase(s);
  }
};
void mySQLite3Class::createDatabase(const string& s) {
  int rc = sqlite3_open_v2(s.c_str(),
                       &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
                       NULL);
  if(rc != SQLITE_OK) {
    std::cout << rc << std::endl;
  }
}
void mySQLite3Class::createTable(const string& s) {
  sqlite3_stmt *stmt;
  int rc = sqlite3_prepare_v2(db, s.c_str(), s.length(), &stmt, NULL );
  if(rc != SQLITE_OK) {
    std::cout << rc << std::endl;// error = 1
    std::cout << sqlite3_errmsg(db)
              << std::endl; // er-msg = library routine called out of sequence
  }
  rc = sqlite3_step(stmt);
  if(rc != SQLITE_DONE) {
    std::cout << rc << endl;
  }
  sqlite3_finalize(stmt);
}
int main(int argc,char *argv[])
{
  string dbName = "001Database.sql";
  string sql_param_tblName = "CREATE TABLE name(n_id INTEGER PRIMARY KEY, title 
TEXT, fname TEXT, mname TEXT, lname TEXT)";
  mySQLite3Class *myDB = new mySQLite3Class(dbName);
  myDB->createTable(sql_param_tblName);
  return 0;
}


Michael D. Black
Senior Scientist
Advanced Analytics Directorate
Advanced GEOINT Solutions Operating Unit
Northrop Grumman Information Systems




From: sqlite-users-boun...@sqlite.org [sqlite-users-boun...@sqlite.org] on 
behalf of Arbol One [arbol...@gmail.com]
Sent: Monday, July 23, 2012 1:54 PM
To: SqLite
Subject: EXT :[sqlite] C++ - Creating Table


Using SQLite version 3.7.8 amalgamation, under Win7 with MinGW, I compile
the bellow program, but for some strange reason I am getting a runtime error
when creating the table. I hope that one of you would be able to tell me
what I am doing wrong.



TIA

===

class mySQLite3Class {

private:

    //SQLite3

    sqlite3* db; //SQLite3

    Glib::ustring dbName; // Database name

    Glib::ustring apstr; // All Purpose String



    Glib::ustring sql_param_tblName; // Databese table Name parameters

    Glib::ustring stmtName;          // SQL statement name

public:

    void createDB();

    void create_tblName();

    mySQLite3Class(const Glib::ustring& s){ createDatabase(s);}

};

void mySQLite3Class::createDatabase(const Glib::ustring& s) {

    rc = sqlite3_open_v2(s.c_str(),

                         &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,

                         NULL);

    if(rc != SQLITE_OK) {

        std::cout << rc << std::endl;

    }

}

void mySQLite3Class::createTable(const Glib::ustring& s){

     rc = sqlite3_prepare_v2(db, s.c_str(), s.length(), &stmt, NULL );

    if(rc != SQLITE_OK) {

       std::cout << rc << std::endl;// error = 1

       std::cout << sqlite3_errmsg(db)

                       << std::endl; // er-msg = library routine called out
of sequence

    }

    rc = sqlite3_step(stmt);

    if(rc != SQLITE_DONE) {

        std::cout << rc << stdl;

    }

    sqlite3_finalize(stmt);

}

myClass{

private:

mySQLite3Class* myDB;

Glib::ustring sql_param_tblName;

Glib::ustring dbName;

public:

myClass();

}

myClass::myClass(){

    dbName = "001Database.sql";

    sql_param_tblName = "CREATE TABLE name(n_id INTEGER PRIMARY KEY, title
TEXT, fname TEXT, mname TEXT, lname TEXT)";

    myDB = new mySQLite3Class(dbName);

    myDB->createTable(sql_param_tblName); ==> // problem

}

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to