<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[sqlite objekt als Klassenvariable - seg fault]]></title><description><![CDATA[<p>Hallo,</p>
<p>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 &quot;dbOpen&quot; die sqlite3 db zu öffnen und das handle in der klassenvariable dbHandle abzulegen.</p>
<pre><code class="language-cpp">class sqliteBackend
{
    sqlite3* dbHandle;
    public:
        sqliteBackend();
        ~sqliteBackend();
        int dbOpen(string db_Path);
};
</code></pre>
<pre><code class="language-cpp">int sqliteBackend::dbOpen(string db_Path)
{
    cout &lt;&lt; &quot;opening the db...&quot; &lt;&lt; endl;
    if(sqlite3_open(db_Path.c_str(),&amp;dbHandle) != SQLITE_OK)
    {
        cout &lt;&lt; &quot;Error opening database: &quot; &lt;&lt; _dbFile &lt;&lt; endl;
        return 1;
    }
    cout &lt;&lt; &quot;opened the db!&quot; &lt;&lt; endl;
</code></pre>
<p>die Ausgabe sieht dann so aus:</p>
<blockquote>
<p>opening the db...<br />
Segmentation fault</p>
</blockquote>
<p>Ich binde die sqlite3.h von <a href="http://sqlite.org" rel="nofollow">sqlite.org</a> ein.</p>
<p>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. dbHandle im Konstruktor mit NULL zu initialisieren ändert nichts.<br />
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</p>
<p>Gruß,<br />
Betagan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/208456/sqlite-objekt-als-klassenvariable-seg-fault</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 20:37:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/208456.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 18 Mar 2008 17:53:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to sqlite objekt als Klassenvariable - seg fault on Tue, 18 Mar 2008 17:53:07 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>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 &quot;dbOpen&quot; die sqlite3 db zu öffnen und das handle in der klassenvariable dbHandle abzulegen.</p>
<pre><code class="language-cpp">class sqliteBackend
{
    sqlite3* dbHandle;
    public:
        sqliteBackend();
        ~sqliteBackend();
        int dbOpen(string db_Path);
};
</code></pre>
<pre><code class="language-cpp">int sqliteBackend::dbOpen(string db_Path)
{
    cout &lt;&lt; &quot;opening the db...&quot; &lt;&lt; endl;
    if(sqlite3_open(db_Path.c_str(),&amp;dbHandle) != SQLITE_OK)
    {
        cout &lt;&lt; &quot;Error opening database: &quot; &lt;&lt; _dbFile &lt;&lt; endl;
        return 1;
    }
    cout &lt;&lt; &quot;opened the db!&quot; &lt;&lt; endl;
</code></pre>
<p>die Ausgabe sieht dann so aus:</p>
<blockquote>
<p>opening the db...<br />
Segmentation fault</p>
</blockquote>
<p>Ich binde die sqlite3.h von <a href="http://sqlite.org" rel="nofollow">sqlite.org</a> ein.</p>
<p>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. dbHandle im Konstruktor mit NULL zu initialisieren ändert nichts.<br />
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</p>
<p>Gruß,<br />
Betagan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1476773</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476773</guid><dc:creator><![CDATA[betagan]]></dc:creator><pubDate>Tue, 18 Mar 2008 17:53:07 GMT</pubDate></item><item><title><![CDATA[Reply to sqlite objekt als Klassenvariable - seg fault on Tue, 18 Mar 2008 21:07:12 GMT]]></title><description><![CDATA[<p>Wo kommt denn &quot;_dbFile&quot; her?</p>
<p>Ich denke das daher dein Segfault kommt.</p>
<p>BR<br />
Vinzenz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1476904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476904</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Tue, 18 Mar 2008 21:07:12 GMT</pubDate></item><item><title><![CDATA[Reply to sqlite objekt als Klassenvariable - seg fault on Tue, 18 Mar 2008 21:27:07 GMT]]></title><description><![CDATA[<p>warum benutzt du nicht einen debugger//mem-checker?</p>
<p>ein aufruf von z.B. valgrind und dein problem wäre wahrscheinlich gelöst ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1476913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1476913</guid><dc:creator><![CDATA[DebuggerOo]]></dc:creator><pubDate>Tue, 18 Mar 2008 21:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to sqlite objekt als Klassenvariable - seg fault on Wed, 19 Mar 2008 13:36:56 GMT]]></title><description><![CDATA[<p>argh,</p>
<p>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...</p>
<p>hat sich damit erledigt, trotzdem danke!</p>
<p>Gruß,<br />
Betagan</p>
<p>PS: ich benutze normalerweise strace oder gdb, aber da bekam ich außer Memory leak nicht viel zu sehen.. valgrind sieht sehr geil aus, werd ich auf jedenfall mal ausprobieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1477279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1477279</guid><dc:creator><![CDATA[betagan]]></dc:creator><pubDate>Wed, 19 Mar 2008 13:36:56 GMT</pubDate></item></channel></rss>