nu har jeg endelig taget mig sammen og fået tid til at få kigget ordentligt på sqlite som i foreslog, men da jeg ikke syntes at det originale C biblotek er så fandens nemt vil jeg bruge en wrapper til C++.
først brugte jeg denne
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
#include <iterator>
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
class SQLITE3 {
private:
sqlite3 *db;
char *zErrMsg;
char **result;
int rc;
int nrow,ncol;
int db_open;
public:
std::vector<std::string> vcol_head;
std::vector<std::string> vdata;
SQLITE3 (std::string tablename="init.db"): zErrMsg(0), rc(0),db_open(0) {
rc = sqlite3_open(tablename.c_str(), &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
}
db_open=1;
}
int exe(std::string s_exe) {
rc = sqlite3_get_table(
db, /* An open database */
s_exe.c_str(), /* SQL to be executed */
&result, /* Result written to a char *[] that this points to */
&nrow, /* Number of result rows written here */
&ncol, /* Number of result columns written here */
&zErrMsg /* Error msg written here */
);
if(vcol_head.size() > 0) {vcol_head.clear();}
if(vdata.size()>0) {vdata.clear();}
if( rc == SQLITE_OK ){
for(int i=0; i < ncol; ++i)
vcol_head.push_back(result[i]); /* First row heading */
for(int i=0; i < ncol*nrow; ++i)
vdata.push_back(result[ncol+i]);
}
sqlite3_free_table(result);
return rc;
}
~SQLITE3(){
sqlite3_close(db);
}
};
men jeg havde problemer med at den pludselig sagde at sql ikke var defineret i en kode jeg havde skrevet til at trække data ud af databasen selvom at jeg havde haft brugt den før hvor der bare var noget andet galt, og en anden funktion der satte ting ind virkede fint med sql statement. så fandt jeg en anden herfra:
http://www.alhem.net/project/sqlite/index.htmlmen af en eller anden grund kommer den bare med linker error: [Linker error] undefined reference to `Database::Connected()'
jeg har linket til tclsqlite3.dll som før har virker, og jeg har includet headeren. her er den simple kode jeg prøver at køre
#include <sqlite3.h>
#include <libsqlitewrapped.h>
int main()
{
Database db("tutorial.db");
if (!db.Connected())
{
printf("Database not connected - exiting\n");
exit(-1);
}
}
nogen der har en forklaring på et af disse problemer?