I have a problem with SQLite in BCB 4.0. I wrote my own application - I found very useful information on http://www.dreamincode.net/forums/index.php?showtopic=122300
On form (Form1) I have: Memo1 and Button3. File Unit1.cpp: <code> //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include <fstream.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; // DLL handle HANDLE DLLHandle = LoadLibrary("sqlite3.dll"); // SQLite class Database::Database(char* filename) { sqlite3_open = (int (__cdecl *)(const char *, sqlite3**))GetProcAddress(DLLHandle,"sqlite3_open"); sqlite3_close = (int (__cdecl *)(sqlite3*))GetProcAddress(DLLHandle,"sqlite3_close"); sqlite3_prepare_v2 = (int (__cdecl *)(sqlite3*, const char*, int, sqlite3_stmt**, const char**))GetProcAddress(DLLHandle,"sqlite3_prepare_v2"); sqlite3_column_count = (int (__cdecl *)(sqlite3_stmt*))GetProcAddress(DLLHandle,"sqlite3_column_count"); sqlite3_step = (int (__cdecl *)(sqlite3_stmt*))GetProcAddress(DLLHandle,"sqlite3_step"); sqlite3_column_text = (const unsigned char (__cdecl *)(sqlite3_stmt*, int iCol))GetProcAddress(DLLHandle,"sqlite3_column_text"); sqlite3_finalize = (int (__cdecl *)(sqlite3_stmt*))GetProcAddress(DLLHandle,"sqlite3_finalize"); database = NULL; open(filename); } Database::~Database() { } bool Database::open(char* filename) { if(sqlite3_open(filename, &database) == SQLITE_OK) { Form1->Memo1->Lines->Add("You have access to base."); return true; } return false; } vector<vector<string> > Database::query(char* query) { sqlite3_stmt *statement; vector<vector<string> > results; if(sqlite3_prepare_v2(database, query, -1, &statement, 0) == SQLITE_OK) { int cols = sqlite3_column_count(statement); int result = 0; while(true) { result = sqlite3_step(statement); if(result == SQLITE_ROW) { vector<string> values; for(int col = 0; col < cols; col++) { values.push_back((char*)sqlite3_column_text(statement, col)); // HERE IS ERROR ! } results.push_back(values); } else { break; } } sqlite3_finalize(statement); } return results; } void Database::close() { sqlite3_close(database); } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { Database *db; db = new Database("Database.sqlite"); db->query("CREATE TABLE a (a INTEGER, b INTEGER);"); db->query("INSERT INTO a VALUES(1, 2);"); db->query("INSERT INTO a VALUES(5, 4);"); vector<vector<string> > result = db->query("SELECT a, b FROM a;"); for(vector<vector<string> >::iterator it = result.begin(); it < result.end(); ++it) { vector<string> row = *it; cout << "Values: (A=" << row.at(0) << ", B=" << row.at(1) << ")" << endl; } db->close(); } //--------------------------------------------------------------------------- </code> and file Unit1.h <code> //--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include "sqlite3.h" #include <vector.h> #include <Grids.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // IDE-managed Components TMemo *Memo1; TButton *Button3; void __fastcall Button3Click(TObject *Sender); private: // User declarations public: // User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- class Database { public: Database(char* filename); ~Database(); bool open(char* filename); vector<vector<string> > query(char* query); void close(); sqlite3 *database; private: int (*sqlite3_open)(const char *, sqlite3**); int (*sqlite3_prepare_v2)(sqlite3*, const char*, int, sqlite3_stmt**, const char**); int (*sqlite3_column_count)(sqlite3_stmt*); int (*sqlite3_step)(sqlite3_stmt*); const unsigned char (*sqlite3_column_text)(sqlite3_stmt*, int iCol); int (*sqlite3_finalize)(sqlite3_stmt*); int (*sqlite3_close)(sqlite3*); }; //--------------------------------------------------------------------------- #endif </code> I was copy sqlite.dll (http://www.sqlite.org/sqlitedll-3_6_22.zip) to my project folder, and sqlite3.h (http://www.sqlite.org/sqlite-amalgamation-3_6_22.zip) to Borland\Include\ I can make database and add new record. I have problem with SELECT. I got error on line: <code> values.push_back((char*)sqlite3_column_text(statement, col)); // TUTAJ WYWALA BŁĄD ! </code> How to fix it ? I have Borland Builder 4 Standart and Windows 7. I use 3.6.22 version of SQLite. Link to my project (comments in polish): http://chimerian.net/4prog.rar ------------------------------------------------- Atrakcyjne mieszkania i dziaĹ‚ki. SprawdĹş oferty! http://link.interia.pl/f260b _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users