<?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[Programmieren einer Datenbank]]></title><description><![CDATA[<p>i,<br />
ich moechte mich gerne im Programmieren einer Datenbank ueben. Soll fuers Erste nichts spektakulaeres sein. Ich wuerde gerne ein paar Tips und evtl auch das ein oder andere Beispiel haben, damit ich mich da ein bisschen einarbeiten kann.<br />
Die Datenbank soll Objekte speichern, also nicht einfach nur Strings sondern structs oder Klassen als Basis verwenden. Wie faengt man sowas am besten an?</p>
<p>Man kann natuerlich einen std::vector nehmen und eine Basisklasse schreiben. Die unterschiedlichen Datenstrukturen von dieser Basisklasse ableiten und rein in das ding. Das erscheint mir bei oberflaechlicher Betrachtung als ein wenig zu leicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/219416/programmieren-einer-datenbank</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 03:13:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/219416.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Aug 2008 20:56:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sat, 02 Aug 2008 20:56:11 GMT]]></title><description><![CDATA[<p>i,<br />
ich moechte mich gerne im Programmieren einer Datenbank ueben. Soll fuers Erste nichts spektakulaeres sein. Ich wuerde gerne ein paar Tips und evtl auch das ein oder andere Beispiel haben, damit ich mich da ein bisschen einarbeiten kann.<br />
Die Datenbank soll Objekte speichern, also nicht einfach nur Strings sondern structs oder Klassen als Basis verwenden. Wie faengt man sowas am besten an?</p>
<p>Man kann natuerlich einen std::vector nehmen und eine Basisklasse schreiben. Die unterschiedlichen Datenstrukturen von dieser Basisklasse ableiten und rein in das ding. Das erscheint mir bei oberflaechlicher Betrachtung als ein wenig zu leicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558252</guid><dc:creator><![CDATA[C167]]></dc:creator><pubDate>Sat, 02 Aug 2008 20:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sat, 02 Aug 2008 21:23:57 GMT]]></title><description><![CDATA[<p>mir nicht klar.</p>
<p>willst du ein datenbankmanagement selber programmieren?<br />
oder eine fertige hernehmen und objekte speichern können?</p>
<p>oder textfiles hernehmen und objekte darin speichern?</p>
<p>wenn das erste, was soll das managementsystem können, und wie sollen die daten auf der platte abgelegt werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558258</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Sat, 02 Aug 2008 21:23:57 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sat, 02 Aug 2008 22:25:27 GMT]]></title><description><![CDATA[<p>Das tolle einer Datenbank ist, dass die Daten auch auf der Festplatte liegen.<br />
Sprich du musst den Vektor auch speichern können. Zudem kannst du nicht immer<br />
alle Daten im Ram haben. Es wird immer nur das geladen was gebraucht wird, oder soviel wie reinpasst. Dafür musst du dir auch noch eine Lösung überlegen.<br />
Damit Bist du schon ein bischen beschäftigt. Dann müssen andere Programme auch<br />
auf die Datenbak zugreifen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558280</guid><dc:creator><![CDATA[fdgdfgd]]></dc:creator><pubDate>Sat, 02 Aug 2008 22:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 04:48:52 GMT]]></title><description><![CDATA[<p>Objekte direkt speichern wird in C++ schwierig, da es weder eine allgemeine Methode zum Serialisieren noch Reflection gibt. Du müsstest dir eine Schnittstelle ausdenken um an die Daten zu kommen und die muss dann jedes Objekt implementieren, dass gespeichert werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558333</guid><dc:creator><![CDATA[the weatherman]]></dc:creator><pubDate>Sun, 03 Aug 2008 04:48:52 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 08:33:20 GMT]]></title><description><![CDATA[<p>Wenn du jetzt eine Struktur hast, sind da auch nur Daten drin, wie bspw. Integer und Strings und son Quark. Andere Objekte bestehen auch aus Quark! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /><br />
Und Quark kannst du in der Datenbank schon so speichern.</p>
<p>Bsp:</p>
<pre><code class="language-cpp">struct sBla {
    int zahl;
    int zahl2;
    string text;
} Bla;

query &lt;&lt; &quot;INSERT INTO &lt;table&gt; (zahl,zahl2,meintext)&quot;
         &quot;VALUES(&quot; &lt;&lt; Bla.zahl &lt;&lt; &quot;, &quot; &lt;&lt; Bla.zahl2 &lt;&lt; &quot;, &quot; &lt;&lt; Bla.text &lt;&lt; &quot;);&quot;;
</code></pre>
<p>Beispiel ohne Gewähr und ohne Verstand.<br />
Ich hoffe es ist klar, was ich damit sagen wollte!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558369</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558369</guid><dc:creator><![CDATA[Thomy]]></dc:creator><pubDate>Sun, 03 Aug 2008 08:33:20 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 10:24:30 GMT]]></title><description><![CDATA[<p>elise schrieb:</p>
<blockquote>
<p>willst du ein datenbankmanagement selber programmieren?</p>
</blockquote>
<p>Nein, eine simple Datenbank. Sie braucht nichtmal Tabellen zu unterstuetzen, eine Instanz der Datenbankklasse pro Tabelle reicht.</p>
<p>elise schrieb:</p>
<blockquote>
<p>oder eine fertige hernehmen und objekte speichern können?</p>
</blockquote>
<p>Nein, ich moechte es ja selber machen.</p>
<p>elise schrieb:</p>
<blockquote>
<p>oder textfiles hernehmen und objekte darin speichern?</p>
</blockquote>
<p>Speichern stelle ich mir so vor: man nehme eine Datei und schreibe den Inhalt eines jeden Objekts in der Datenbank sequentiell hinein, evtl mit entsprechenden Markierungen damit man das Ende eines Objekts erkennt. Laden waere dann nur das kopieren der Objekte aus der Datei in den speicher. Das muss es aber zuerst mal nicht koennen, das laesst sich ja auch durch ein paar geeignete Klassen erreichen.</p>
<p>elise schrieb:</p>
<blockquote>
<p>wenn das erste, was soll das managementsystem können, und wie sollen die daten auf der platte abgelegt werden?</p>
</blockquote>
<p>Wie gesagt, ablegen nicht wichtig am Anfang <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
<p>fdgdfgd schrieb:</p>
<blockquote>
<p>Das tolle einer Datenbank ist, dass die Daten auch auf der Festplatte liegen. Sprich du musst den Vektor auch speichern können. Zudem kannst du nicht immer alle Daten im Ram haben. Es wird immer nur das geladen was gebraucht wird, oder soviel wie reinpasst. Dafür musst du dir auch noch eine Lösung überlegen.</p>
</blockquote>
<p>Och ja, ich moechte die Daten im Speicher halten. auslagern auf die Platte wenn ueberhaupt, dann spaeter wenn die Datenbank ueberhaupt mal besteht.</p>
<p>fdgdfgd schrieb:</p>
<blockquote>
<p>Damit Bist du schon ein bischen beschäftigt. Dann müssen andere Programme auch auf die Datenbak zugreifen können.</p>
</blockquote>
<p>Nein, es soll eine pure Datenbank sein, die in der Software, die darauf zugreift, laeuft. Das hatte ich tatsaechlich zu erwaehnen vergessen: Die Datenbank soll quasi nur fuer ein einziges Programm existieren, und zwar das Programm, dass die Datenbankklassen benutzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> Sprich keine eigene Anwendung wie die grossen RDBMS, sondern eine Sammlung von Klassen.</p>
<p>the weatherman schrieb:</p>
<blockquote>
<p>Objekte direkt speichern wird in C++ schwierig, da es weder eine allgemeine Methode zum Serialisieren noch Reflection gibt. Du müsstest dir eine Schnittstelle ausdenken um an die Daten zu kommen und die muss dann jedes Objekt implementieren, dass gespeichert werden soll.</p>
</blockquote>
<p>Ja, wie ein paar Zeilen weiter oben beschrieben. Tut mir leid dass ich das vergessen hab.</p>
<p>Thomy schrieb:</p>
<blockquote>
<p>Wenn du jetzt eine Struktur hast, sind da auch nur Daten drin, wie bspw. Integer und Strings und son Quark. Andere Objekte bestehen auch aus Quark! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /><br />
Und Quark kannst du in der Datenbank schon so speichern.<br />
[schnipp]<br />
Beispiel ohne Gewähr und ohne Verstand.<br />
Ich hoffe es ist klar, was ich damit sagen wollte!</p>
</blockquote>
<p>Ja, wie gesagt, steht bissel weiter oben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558414</guid><dc:creator><![CDATA[C167]]></dc:creator><pubDate>Sun, 03 Aug 2008 10:24:30 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 11:01:14 GMT]]></title><description><![CDATA[<p>ich hab mir eben mal ueberlegt, wie man einen Forumspost darstellen koennte:</p>
<pre><code class="language-cpp">class post
{
	private:
		unsigned int m_id;
		user *poster;		// direkter Zeiger auf den Poster
		string m_content;
		string m_title;
	public:
		post( unsigned int id, char *title, char *content, user *poster);
		user *user() { return m_user; };
		unsigned int id() { return m_id: };
		string *content() { return m_content; };
		string *title() { return m_title; };

		bool streamToFile( int fd ); //! schreibt das Objekt in eine Datei (nehme an, den inhalt von this?)
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1558433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558433</guid><dc:creator><![CDATA[C167]]></dc:creator><pubDate>Sun, 03 Aug 2008 11:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 13:42:46 GMT]]></title><description><![CDATA[<blockquote>
<p>bool streamToFile( int fd ); //! schreibt das Objekt in eine Datei (nehme an, den inhalt von this?)</p>
</blockquote>
<p>Da würdest du besser die &lt;&lt; und &gt;&gt; Operatoren überladen.</p>
<p>Du kannst ja mal eine DB machen, die in .txt Dateien abspeichert und man wieder einfach einlesen/auswerten kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558508</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558508</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 03 Aug 2008 13:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 17:56:15 GMT]]></title><description><![CDATA[<p>Ist euch schon aufgefallen, daß der Erstposter gar nicht weiß was er will bzw.<br />
was eine Datenbank eigentlich ist `?</p>
<p>Haut ihm nicht gleich solche Sachen um die Ohren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558610</guid><dc:creator><![CDATA[Scheppertreiber]]></dc:creator><pubDate>Sun, 03 Aug 2008 17:56:15 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 18:08:22 GMT]]></title><description><![CDATA[<p>Was genau hast du vor? Bei deiner Klasse für das Posting übernimmt die Datenbank ja nur das Dateimanagement, das Laden und Speichern überlässt du ja dem Objekt.</p>
<p>Erkläre mal in Worte, möglichst genau, wie du dir die Interaktion eines Programms mit der Datenbank vorstellst. Dann kann man dir am besten helfen, wie du schon festgestellt hast, haben die meisten hier - einschließlich ich - eine andere Vorstellung von einer Datenbank (wenn wir Datenbank sagen, meinen wir eigentlich ein Datenbankmanagementsystem, kurz DBMS).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558616</guid><dc:creator><![CDATA[Erklärbär]]></dc:creator><pubDate>Sun, 03 Aug 2008 18:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 18:09:50 GMT]]></title><description><![CDATA[<p>Erklärbär schrieb:</p>
<blockquote>
<p>Was genau hast du vor? Bei deiner Klasse für das Posting übernimmt die Datenbank ja nur das Dateimanagement, das Laden und Speichern überlässt du ja dem Objekt.</p>
<p>Erkläre mal in Worte, möglichst genau, wie du dir die Interaktion eines Programms mit der Datenbank vorstellst. Dann kann man dir am besten helfen, wie du schon festgestellt hast, haben die meisten hier - einschließlich ich - eine andere Vorstellung von einer Datenbank (wenn wir Datenbank sagen, meinen wir eigentlich ein Datenbankmanagementsystem, kurz DBMS).</p>
</blockquote>
<p>Das was du programmieren willst ist übrigens auch ein DBMS, die Datenbank ist deine Textdatei.</p>
<p>Also so unterschiedlich sind unsere Auffassungen nicht, nur stellen wir uns unter einem DBMS etwas mehr vor als du es im Moment willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558618</guid><dc:creator><![CDATA[Erklärbär]]></dc:creator><pubDate>Sun, 03 Aug 2008 18:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Sun, 03 Aug 2008 18:20:36 GMT]]></title><description><![CDATA[<p>man könnte sich z.b. anschauen wie andere sowas machen.<br />
--&gt; <a href="http://www.freebyte.com/programming/database/" rel="nofollow">http://www.freebyte.com/programming/database/</a><br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558624</guid><dc:creator><![CDATA[fricky]]></dc:creator><pubDate>Sun, 03 Aug 2008 18:20:36 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Mon, 04 Aug 2008 10:19:13 GMT]]></title><description><![CDATA[<p>Klingt mir eher so als wenn eine Resourcendatei gesucht wird. Recht simpel wenn man dies in zwei Dateien aufsplittet: Resourcendatei und Indexdatei. Die erste binär, die zweite textuell. Löschen ist dann vielleicht etwas haarig wegen dem ganzen hin und her geschiebe, wenn man denn keine Löcher will, aber auch das läßt sich regeln.</p>
<p>Und das Interface bräuchte nur aus int write(char *data, unsigned int size) und dem entsprechendem read bestehen und dabei jeweils mit einer ID arbeiten. Noch ein has_data(id) oder get_size_of(id) etc. rein und es wird schon fast komfortabel. Geht sogar komplett in C, wenn man sowas denn will...</p>
<p>Oder einfach den Kram stumpf zippen mit zlib. Spart auch noch Platz. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1558895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1558895</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Mon, 04 Aug 2008 10:19:13 GMT</pubDate></item><item><title><![CDATA[Reply to Programmieren einer Datenbank on Mon, 04 Aug 2008 16:58:38 GMT]]></title><description><![CDATA[<p>Problem ist, dass mir die korrekten Begriffe fehlen, die einzigen Datenbanken, mit denen ich bisher gearbeitet hab, sind MySQL und SQLite, also hab ich bisher noch nicht viel mit der eigentlichen Datenspeicherung zu tun gehabt.</p>
<p>Ich hoffe, diesmal gelingt es mir, mein Vorhaben in Worte zu fassen:<br />
Eine Klasse dient als Frontend zu einem Satz Tabellen. Jede Tabelle enthaellt Eintraege. Dabei ist jede Tabelle ein Objekt, eine Instanz einer Klasse, auf den jeweiligen Anwendungszweck spezialisiert (die evtl. von einer Basisklasse abgeleitet sein sollte, moechte man spaeter noch Tabellen dazutun). Jeder Datensatz ist ein Objekt einer Klasse und wird von der jeweiligen Tabellenklasse gespeichert.</p>
<p>Die komplette Datenbank liegt also im Arbeitsspeicher.</p>
<p>Anlegen koennte man das eventuell so:</p>
<pre><code class="language-cpp">class UserTable
{
    private:
        std::map&lt;int, entry *&gt; usersById;
    public:
        class entry
        {
             public:
                 ...
        };
}
</code></pre>
<p>Jeder Eintrag ist also ein Objekt im Speicher. Ausfallsicherheit gleich null, ich weiss, aber das ist mir momentan nicht wichtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1559155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1559155</guid><dc:creator><![CDATA[C167]]></dc:creator><pubDate>Mon, 04 Aug 2008 16:58:38 GMT</pubDate></item></channel></rss>