Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » sqlite3 db-handle als klassenvariable - segfaulted

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
18.03.2008, 13:20 Uhr
~Betagan
Gast


Hallo,

Ich versuche zur Zeit eine Datenbank-Klasse zu schreiben, die mir beim erstellen eines neuen Klassenobjektes eine Verbindung zu einer Sqlite3 datenbank öffnet und das handle für spätere queries speichert, um nicht für jeden query die datenbank neu zu öffnen. Ich versuche jetzt aus der Member-funktion "dbOpen" die sqlite3 db zu öffnen und das handle in der klassenvariable dbHandle abzulegen.


C++:
class sqliteBackend
{
    sqlite3* dbHandle;
    public:
        sqliteBackend();
        ~sqliteBackend();
        int dbOpen(string db_Path);
};



C++:
int sqliteBackend::dbOpen(string db_Path)
{
    cout << "opening the db..." << endl;
    if(sqlite3_open(db_Path.c_str(),&dbHandle) != SQLITE_OK)
    {
        cout << "Error opening database: " << _dbFile << endl;
        return 1;
    }
    cout << "opened the db!" << endl;



die Ausgabe sieht dann so aus:

Zitat:

opening the db...
Segmentation fault



Ich binde die sqlite3.h von sqlite.org ein.

Meine Vermutung ist, das ich bei der Klassendeklaration etwas falsch gemacht hab, bzw. falsch auf die Variable zugreife oder so. Leider konnte ich dem Problem bisher nicht näher kommen.
Ich hoffe jmd von euch hat eine Idee woran es liegen könnte. Ich weiß leider nicht, ob es ein problem von sqlite3 ist oder von meinem c++-code

Gruß,
Betagan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
18.03.2008, 14:04 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,
initialisier im konstruktor dbHandle mit NULL
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
18.03.2008, 17:08 Uhr
~betagan
Gast


das ändert leider nichts an dem problem.
Hab jetzt im Konstruktor zusätzlich stehen

C++:
dbHandle = NULL;
// this->dbHandle=NULL; // tut auch nichts

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
18.03.2008, 19:16 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hi, dann schau mal mit gdb oder strace wo das programm rausfällt.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
19.03.2008, 14:38 Uhr
~Betagan
Gast


argh,

ich hab in der wrapper klasse dadrüber nen Fehler gehabt... der gestalt dass ich im konstruktor nen objekt dieser sqliteBackend klasse erstellt hab, aber das nicht in der membervariable sondern in irgendwas anderem gespeichert hab.. beim aufruf einer funktion versucht der die membervariable zu nehmen.. wir kriegen undefined bevahour weil da na klar kein speicher zugewiesen wurde...

hat sich damit erledigt, trotzdem danke!

Gruß,
Betagan
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: