<?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[Datenbanken]]></title><description><![CDATA[Datenbanken als klassisches Backend der Datenspeicherung werden in jeder Art Software immer gängiger. Installation, Anbindung typischer Datenbanken (MariaDB, MySQL, Access, SQL Server, SQLite), SQL oder Datenbank-Administration sind hier die Themen.]]></description><link>https://www.c-plusplus.net/forum/category/69</link><generator>RSS for Node</generator><lastBuildDate>Sun, 14 Jun 2026 16:07:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/category/69.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Jan 2009 10:47:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Best Practice Day- Neues und Unbekanntes für den Systemadministrator]]></title><description><![CDATA[Im Februar startet der Microsoft TechDay mit einer Sonderreihe. Unter dem Motto „Best Practice Day- Neues und Unbekanntes für den Systemadministrator“ geht es an fünf Tagen in fünf Städten – München, Karlsruhe, Frankfurt, Leipzig und Hamburg – um das Thema „System-Administrator“.
Die täglichen Aufgaben des SysAdmins unterstützen zahlreiche Tools, die oft unbekannt sind oder unterschätzt werden. Diese Tools, zusammen mit vielen Tipps und Tricks, werden von den Microsoft Evangelisten im Rahmen des Microsoft TechDays vorgestellt.
Weitere Infos und Anmeldung unter: http://go.microsoft.com/?linkid=9645348
Im Rahmen dieser Veranstaltung gibt es bei c++.de ein Gewinnspiel, bei dem unter anderem 2 kostenlose Eintrittskarten für den TechDay zu gewinnen sind, sowie weitere Preise:
3 Microsoft Livecams VX-7000
3 Halo 3
3 Leatherman Kick
Registrierte Benutzer von c++.de können über den folgenden Link zum Preisrätsel kommen und an dem Gewinnspiel teilnehmen. Einsendeschluß ist der 06.02.2009.
http://www.c-plusplus.net/forum/profile-var-mode-is-email-and-u-is-108643.html
]]></description><link>https://www.c-plusplus.net/forum/topic/231701/best-practice-day-neues-und-unbekanntes-für-den-systemadministrator</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/231701/best-practice-day-neues-und-unbekanntes-für-den-systemadministrator</guid><dc:creator><![CDATA[Marc++us]]></dc:creator><pubDate>Wed, 14 Jan 2009 10:47:19 GMT</pubDate></item><item><title><![CDATA[FAQ - Vor dem posten bitte hier reinschauen]]></title><description><![CDATA[Die Datenbank-FAQ
Bitte schaut ob einige eurer Fragen vielleicht schon beantwortet sind. Benutzt dazu auch die Suchfunktion. Beachtet beim posten bitte auch die gängigen Regeln -&gt; Wie man Fragen richtig stellt

Basiswissen rund um Datenbanken und zu SQL - Links und Erklärungen über Datenbanken Basiswissen und SQL.
Datenbanken in Programmen ansprechen - Wie man Datenbanken (wie MySQL oder Access) an ein Programm anbinden kann.
Freie/Kostenlose Datenbanken - eine Liste von freien oder kostenlosen Datenbanken.

]]></description><link>https://www.c-plusplus.net/forum/topic/88397/faq-vor-dem-posten-bitte-hier-reinschauen</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/88397/faq-vor-dem-posten-bitte-hier-reinschauen</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sat, 09 Oct 2004 11:49:58 GMT</pubDate></item><item><title><![CDATA[SQL: Funktion in Funktion: Performance grausig]]></title><description><![CDATA[*püschel*
Mein Bauchgefühl sagt mir, es könnte auch ohne die cursor_list und list loop gehen... Aber zu 100 % sicher bin ich mir da nicht. Könntet ihr bitte noch einmal einen Blick darauf werfen?
Btw., gibt es vernünftige/brauchbare SQL source formatter? Dieser ständige Wechsel zwischen UPPER- und lower_case und die Einrückungstiefe macht mich langsam mürbe.
]]></description><link>https://www.c-plusplus.net/forum/topic/355431/sql-funktion-in-funktion-performance-grausig</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/355431/sql-funktion-in-funktion-performance-grausig</guid><dc:creator><![CDATA[Lupus-SLE]]></dc:creator><pubDate>Sat, 31 Jan 2026 21:58:52 GMT</pubDate></item><item><title><![CDATA[Umstellung SQL-Datenbank von 32-bit in 64-bit]]></title><description><![CDATA[@TobiSchneider88 Das ganze ist irgendwie weder eine SQL Frage noch eine C++ Frage. Es scheint um VBA zu drehen.
Wenn du nur den API Zugriff geändert hast, um an den Windows Username zu kommen, würde ich mal an den Stellen schauen, an denen die Funktion aufgerufen wird. Die getSpecialRecordset scheint damit ja erstmal nichts zu tun zu haben.
P.S. Ich habe gerade mal nachgeguckt, VBA 7 ist schon seit Office 2010 und kein guter Indikator für 64 bit?
Du kannst es statt dessen mal mit
#If Win64 Then

versuchen.
Von dem, was ich gerade darüber gelesen habe, ist das eine Compiler Konstante, die das korrekte Ergebniss abhängig von der Office Version gibt.
]]></description><link>https://www.c-plusplus.net/forum/topic/355220/umstellung-sql-datenbank-von-32-bit-in-64-bit</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/355220/umstellung-sql-datenbank-von-32-bit-in-64-bit</guid><dc:creator><![CDATA[Schlangenmensch]]></dc:creator><pubDate>Thu, 27 Mar 2025 08:10:38 GMT</pubDate></item><item><title><![CDATA[MySQL (MariaDB) Netzwerkprotokoll&#x2F;TCP&#x2F;IP&#x2F;Socket]]></title><description><![CDATA[@DocShoe
Danke!
]]></description><link>https://www.c-plusplus.net/forum/topic/354513/mysql-mariadb-netzwerkprotokoll-tcp-ip-socket</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/354513/mysql-mariadb-netzwerkprotokoll-tcp-ip-socket</guid><dc:creator><![CDATA[_ro_ro]]></dc:creator><pubDate>Tue, 30 Jan 2024 14:41:19 GMT</pubDate></item><item><title><![CDATA[Rekursive Baumstruktur in Tabelle speichern.]]></title><description><![CDATA[@Enumerator
es gibt keine rekursive Baumstruktur. Man kann jedoch einen Baum rekursiv durchlaufen um alle Äste zu erfassen, und damit kommen wir zum Punkt: Zur Wurzel kommt man über die Parent-Node. Das heißt, auf Dein Tabellendesign bezogen, daß es ein Feld geben muß welches den Parent für den betreffenden Record ausweist. Nur der Root hat keinen Parent.
Für einen rekursiven Durchlauf drehst Du die Parent-Relation um in eine Children-Relation. Das kann bspw. mit einer Abfrage erfolgen &quot;zeige mir alle Rekords die mich als Parent haben&quot; und das machst Du dann mit jedem Kindknoten, also rekursiv.
MFG
]]></description><link>https://www.c-plusplus.net/forum/topic/352636/rekursive-baumstruktur-in-tabelle-speichern</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352636/rekursive-baumstruktur-in-tabelle-speichern</guid><dc:creator><![CDATA[_ro_ro]]></dc:creator><pubDate>Sat, 27 Jan 2024 12:23:49 GMT</pubDate></item><item><title><![CDATA[mysqlpp]]></title><description><![CDATA[Hallo,
Ich habe folgenden Code:
int
main(int argc, char *argv[])
{
 // Get database access parameters from command line
 mysqlpp::examples::CommandLine cmdline(argc, argv);
 if (!cmdline) {
 return 1;
 }
 // Connect to the sample database.
 mysqlpp::Connection conn(false);
 if (conn.connect(mysqlpp::examples::db_name, cmdline.server(),
 cmdline.user(), cmdline.pass())) {
 // Ask for all rows from the sample stock table and display
 // them. Unlike simple2 example, we retreive each row one at
 // a time instead of storing the entire result set in memory
 // and then iterating over it.
 mysqlpp::Query query = conn.query(&quot;select * from stock&quot;);
 if (mysqlpp::UseQueryResult res = query.use()) {
 // Display header
 cout.setf(ios::left);
 cout &lt;&lt; setw(31) &lt;&lt; &quot;Item&quot; &lt;&lt;
 setw(10) &lt;&lt; &quot;Date&quot; &lt;&lt;
 setw(10) &lt;&lt; &quot;Weight&quot; &lt;&lt;
 setw(10) &lt;&lt; &quot;Price&quot; &lt;&lt;
 &quot;Date&quot; &lt;&lt; endl &lt;&lt; endl;

// Get each row in result set, and print its contents
 while (mysqlpp::Row row = res.fetch_row()) {
 cout &lt;&lt; setw(30) &lt;&lt; row[&quot;item&quot;] &lt;&lt; ' ' &lt;&lt;
 setw(9) &lt;&lt; row[&quot;Date&quot;] &lt;&lt; ' ' &lt;&lt;
 setw(9) &lt;&lt; row[&quot;weight&quot;] &lt;&lt; ' ' &lt;&lt;
 setw(9) &lt;&lt; row[&quot;price&quot;] &lt;&lt; ' ' &lt;&lt;
 setw(9) &lt;&lt; row[&quot;sdate&quot;] &lt;&lt;
 endl;
 }

Ich hätte jetzt 2 Fragen :



Ich würde gerne die Einträge im row[''Date&quot;] modifizieren mit einer Funktion aber ich bin mir nicht so sicher wie. Vielleicht in einem Vektor umwandeln oder ähnliches und dann als Argument in einer Funktion benutzen? Die Funktion soll das Datum was in der Format &quot;yyyy-mm-dd&quot; den Wochentag ausgeben.



Wie kann ich dann Spalten in einer separaten Tabelle speichern also zum Beispiel row[&quot;item&quot;] und row[&quot;Date&quot;]?
Danke im Voraus
LG
Zafar
]]></description><link>https://www.c-plusplus.net/forum/topic/354057/mysqlpp</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/354057/mysqlpp</guid><dc:creator><![CDATA[zmo]]></dc:creator><pubDate>Mon, 24 Apr 2023 18:29:48 GMT</pubDate></item><item><title><![CDATA[Suggestion required for SQL courses]]></title><description><![CDATA[Hello this is Gulshan Negi
I am a software developer. I've recently started learning SQL, and I'm currently reading SQL for Dummies and The Art of SQL book to learn SQL. Should I take any SQL courses to enhance my skills, Is taking a course really helpful? If yes, then which courses should I take?
I need some suggestions on this.
Thanks
]]></description><link>https://www.c-plusplus.net/forum/topic/353932/suggestion-required-for-sql-courses</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/353932/suggestion-required-for-sql-courses</guid><dc:creator><![CDATA[gulshan212]]></dc:creator><pubDate>Mon, 27 Feb 2023 07:32:42 GMT</pubDate></item><item><title><![CDATA[SSL-Zertifikat für MS SQL Server]]></title><description><![CDATA[Hallo,
ich versuche eine API, die ich mit Spring Boot erstellt habe, mit einem Microsoft SQL Server zu verbinden erhalte jedoch die Fehlermeldung Der Treiber konnte keine sichere Verbindung mit SQL Server über die SSL (Secure Sockets Layer)-Verschlüsselung herstellen.
Ich habe daraufhin versucht über die MS Management Console ein Zertifikat zu erstellen und konnte eine .req-Datei runterladen. Mir erschließt sich nun nur nicht wirklich wie es weitergeht. Wie erhalte ich Zugriff auf die .CER-Datei?
Bin dieser Anleitung gefolgt: Link zur Anleitung. Die Anleitung schreibt davon das eine .CER oder .CRT Datei zurückgegeben wird. Nur wo finde ich die?
]]></description><link>https://www.c-plusplus.net/forum/topic/353385/ssl-zertifikat-für-ms-sql-server</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/353385/ssl-zertifikat-für-ms-sql-server</guid><dc:creator><![CDATA[makopo]]></dc:creator><pubDate>Sun, 07 Aug 2022 11:26:35 GMT</pubDate></item><item><title><![CDATA[Warum Sicherheitskopie nicht physisch?]]></title><description><![CDATA[Es gibt einen weiteren Grund. Backups als SQL-Dump sind Version unabhängig wiederherstellbar, das ist fürs Binärformat nicht garantiert.
]]></description><link>https://www.c-plusplus.net/forum/topic/352897/warum-sicherheitskopie-nicht-physisch</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352897/warum-sicherheitskopie-nicht-physisch</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Mon, 13 Dec 2021 17:06:28 GMT</pubDate></item><item><title><![CDATA[SQL Datenbanktabelle in VS 2013 erstellen]]></title><description><![CDATA[Ne, das meine ich nicht. Ich meine welchen &quot;Datenbank-Dienst&quot; du verwendest. Also ob MS SQL Server, MySQL, PostgreSQL etc.
Anyway, starte das dazugehörige Management Tool und erzeuge die Tabelle dort.
]]></description><link>https://www.c-plusplus.net/forum/topic/352800/sql-datenbanktabelle-in-vs-2013-erstellen</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352800/sql-datenbanktabelle-in-vs-2013-erstellen</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 06 Nov 2021 14:55:35 GMT</pubDate></item><item><title><![CDATA[ER Modell - Dreiecksbeziehung weiterverarbeiten]]></title><description><![CDATA[Hallo Liebe Forumsgemeinde,
ich habe eine Frage
Nehmen wir das das folgende ER-Modell (https://ibb.co/WgTqGR2) als gegeben an. Dann erhalte ich eine Tabelle &quot;kauft&quot; als Zwischenrelation aus Kunde und Artikel. Jetzt möchte ich das Modell aber weiterverarbeiten. Und zwar in der Form, dass ich diese Käufe am Ende als eine Bestellung zusammenfassen kann und eine neue Beziehung zwischen &quot;kauft&quot; und Bestellungen habe. In der DB arbeite ich dann einfach mit KaufID in einer anderen Tabelle als Fremdschlüssel weiter. Aber wie würde dies in einem ER-Modell aussehen? Ich komme einfach nicht auf die Lösung.
Würde mich über Hilfe sehr freuen.
VG BB
]]></description><link>https://www.c-plusplus.net/forum/topic/352592/er-modell-dreiecksbeziehung-weiterverarbeiten</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352592/er-modell-dreiecksbeziehung-weiterverarbeiten</guid><dc:creator><![CDATA[BoosterBey]]></dc:creator><pubDate>Fri, 13 Aug 2021 08:02:29 GMT</pubDate></item><item><title><![CDATA[SQlite3 error: database is locked]]></title><description><![CDATA[@MHage Darum ist TDD (https://en.wikipedia.org/wiki/Test-driven_development) the way to go 
]]></description><link>https://www.c-plusplus.net/forum/topic/352585/sqlite3-error-database-is-locked</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352585/sqlite3-error-database-is-locked</guid><dc:creator><![CDATA[Schlangenmensch]]></dc:creator><pubDate>Fri, 06 Aug 2021 07:12:04 GMT</pubDate></item><item><title><![CDATA[Einzigartigkeit von Objekten in Server - Client sicherstellen]]></title><description><![CDATA[@john-0 sagte in Einzigartigkeit von Objekten in Server - Client sicherstellen:

Die IDs auf Clientseite lösen das Problem nicht! Das Problem ist, dass durch den Offline Betrieb Kopien oder konkurrierende neue Einträge entstehen können, und Du Dir darüber Gedanken machen musst wie Du diese Konflikte löst. Eine ID auf Clientseite ist dabei überhaupt nicht hilfreich, weil sie suggeriert, dass es keinen Konflikt gäbe.
Beispiel:
Die DB enthält Adressdaten mit folgendem Eintrag
Hans Mustermann
Musterstraße 2
99999 Musterdorf
Nutzer A ändert den Eintrag auf
Hans Mustermann
Musterstraße 1
99998 Musterstadt
Nutzer B ändert den Eintrag auf
Heinz Mustermann
Musterstraße 2
99999 Musterdorf
Welcher Eintrag ist denn nun korrekt? Analog besteht die Möglichkeit, dass beim offline Erzeugen neuer Einträge exakt die gleiche Problematik auftritt. Wenn der Abgleich über eine UUID erfolgt, dann gibt es keinen Konflikt, wenn der Abgleich über die Daten erfolgt, dann brauchst Du auch keine UUID.

Ich glaube du sprichst hier zwei verschiedene Thematiken an. Mir geht es nur um eine eindeutige Indendifikation der Einträge zu ermöglichen. Du schreibst in deinem Beispiel:
&quot;den Eintrag&quot; -&gt; Welchen Eintrag? Woher weißt du, dass das &quot;Der Eintrag&quot; ist und nicht irgendein x-beliebiger ander Eintrag, der halt zufällig die selben Daten hat. Indem du eben eine ID hast, denn es gibt (wie am Anfang gesagt) keinen natural key. Es muss also eine Idenfikation geben, damit du weißt, dass irgendein Client &quot;den Eintrag&quot; verändert hat 
Was du beschreibst sind Konflikte. Daher man hat bereits eindeutig festgestellt, dass zwei verschiedene Client zeitgleich (während sie offline waren) dieselben Daten beschrieben haben. Wie geht man damit um?
Das ist definitiv ein Problem mit vermutlich vielen Ansätzen:

Man nimmt einfach den ersten / letzen (Don't care)
Man fragt den Nutzer, welchen er haben möchte
Man hat automatische oder Teil-automatische Merge Konflikt Algorithmen (siehe z.B. git)
....

Aber es ist ein anderes Problem und war erstmal nicht direkt meine Frage.
Daher noch mal meine Frage: Wie identifiziert man ein Objekt eindeutig in einem Multi-Client - Server Szenerario mit Offline Funktionalität. Wer generiert wann wo die dazu nötigen eindeutigen Daten (Ids)? Welche Idenfikation wird wo gespeichert?
Einige Ansätze waren:

Der Client generiert eine eindeutige ID (per UUID). Das Objekt wird sowohl lokal als auch auf dem Server nur über diese ID identifieziert.
Der Client generiert eine eindeutige lokale ID (z.B. Auto Increment) und kombiniert sie mit einer eindeutigen statischen Client ID, die er bei erstmaliger Registrierung bekommt. Die ID wird entweder zusammengesetzt &lt;lokale-Id&gt;-&lt;Client-id&gt; oder eben beides seperat abgespeichert auf Server Seite
Der Client generiert eine eindeutige lokale ID (z.B. Auto Increment) und der Server generiert beim ersten hochladenen eine eindeutige globale ID, welche er dem Client mitteilt. Serverseitig wird nur nur die globale ID gespeichert, Client Seitig beides.

Zusätzlich gab es noch ein paar Ideen dazwischen. Zum Beispiel @SeppJ hatte, wenn richtig verstanden, Ansatz 2 im wesentlichen vorgeschlagen. Nur das die Client IDs partioniert werden und dann die Client ID mit der lokalen auto increment ID addiert wird (anstatt das die IDs zusammengesetzt werden).
]]></description><link>https://www.c-plusplus.net/forum/topic/352324/einzigartigkeit-von-objekten-in-server-client-sicherstellen</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352324/einzigartigkeit-von-objekten-in-server-client-sicherstellen</guid><dc:creator><![CDATA[Leon0402]]></dc:creator><pubDate>Sat, 17 Apr 2021 12:59:31 GMT</pubDate></item><item><title><![CDATA[Normalisierung]]></title><description><![CDATA[Ohne Kenntnis der Domäne (und damit der Bedeutung der Spalten) geht das nicht. Woher willst du sonst wissen, ob z.B. Vorname, Nachname und AbteilungId unabhängig voneinander sind?
Ansonsten s.a. Datenbanknormalisierung, d.h. es müssen alle  funktionale Abhängigkeiten bekannt sein.
]]></description><link>https://www.c-plusplus.net/forum/topic/352220/normalisierung</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352220/normalisierung</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 08 Mar 2021 07:58:27 GMT</pubDate></item><item><title><![CDATA[Primary Key string  + autoincremet ID]]></title><description><![CDATA[Ich habe nur Erfahrung mit PostgreSQL:

Timeout für queries lässt sich proprietär mit statement_timeout setzen. statement_timeout wird ab V9.6 benutzt, aber ich selbst habe das noch nie eingesetzt.
Ab V10 unterstützt PostgreSQL Declarative Table Partitioning, da gibt man für eine Tabelle an, in welchem Bereich sich ein Wert bewegt. Die einzelnen Partitionen mit ihren Constraints muss man allerdings selbst pflegen, d.h. man muss ggf. neue Tabellen für neue Intervalle erzeugen. Da scheint aber noch Optimierungspotenzial drinzustecken, denn bis V13 wird da immer noch dran gearbeitet um bessere Performance zu erzielen.
Wir haben mit Postgres V9 ein Tool, das Messdaten in einem 15 Sekunden Intervall aufzeichnet und daraus Diagramme bastelt. Jedes Diagramm besteht so aus 5-12 Kurven und es werden gleichzeitig bis zu vier Diagramme angezeigt. Das war mit Postgres bis V9 nur mit viel Trickserei hinzukriegen (keine vollen Updates der Diagramme, sondern nur inkrementell für den Anzeigebereich, der aktualisiert werden muss. Wenn sich der Anzeigebereich von 8:35:00 - 9:35:00 auf 8:35:15 - 9:35:15 ändert werden z.B. nur die Daten für 9:35:00 bis 9:35:15 angefordert und die bestehenden Daten aktualisiert. Außerdem sind in der db in den Messwert noch Statusinformationen reinkodiert worden, damit alle Daten in einer Tabellenspalte zur Verfügung stehen. Das Auslesen aus der Software ist kein Problem, aber per SQL in die Datenbank zu gucken, um sich die Messwerte anzusehen geht halt nicht. Damals hätte ich schon gerne Table Partitioning gehabt, aber das ging nur umständlich über Vererbung und da war auch nicht klar, ob das besser performt.

Wie du deine Tabellen partitionierst hängt von deiner Anforderung ab, aber wenn es Zeitverläufe sind scheint mit einer Partitionierung nach Zeitstempel schon sinnvoll. Wichtig (zumindest bei PostgreSQL) ist auch, dass man nicht zu viele Partitionen erzeugt, weil das Bestimmen der relevanten Partitionen auch Zeit kostet. Auf Stackoverflow habe ich mal gelesen, dass Partitionierung bei PostgreSQL erst bei Tabellen Sinn macht, die mehrere Millionen Einträge haben (ausm Gedächtnis, ohne Referenz). Zur Not musst du das halt mal selbst mit synthetischen Daten prüfen.
Wie gesagt, über Timescale DB bin ich iwann mal gestolpert, bin aber nie dazu gekommen, das mal auszuprobieren. Wenn du dazu iwann mal Ergebnisse hast würde ich mich sehr über Infos freuen.
]]></description><link>https://www.c-plusplus.net/forum/topic/352168/primary-key-string-autoincremet-id</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352168/primary-key-string-autoincremet-id</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 01 Mar 2021 08:46:39 GMT</pubDate></item><item><title><![CDATA[ODBC oder Alternative!?]]></title><description><![CDATA[Guck dir mal Timescale DB an, vllt ist das was für deinen Fall. Ich wollte mir das auch schon immer mal anschauen, bin bis jetzt aber nicht dazu gekommen.
Edit:
Die setzt auf PostgreSQL auf, da solltest du für fast jede Plattform/Programmiersprache ein Binding zu finden.
]]></description><link>https://www.c-plusplus.net/forum/topic/352155/odbc-oder-alternative</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/352155/odbc-oder-alternative</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Mon, 22 Feb 2021 10:48:18 GMT</pubDate></item><item><title><![CDATA[[Linux] Suche einfache C++ Bibliothek mit Datenbankanbindung]]></title><description><![CDATA[Sqlite als Datenbank
Als Bilbiothek könnte man auch direkt Sqlite nutzen, aber vlt. ist ein wrapper ganz hilfreich:

https://github.com/rbock/sqlpp11  -&gt; Library mit Unterstützung für mehrere Datenbanken (u.a. auch sqlite3 -&gt; https://github.com/rbock/sqlpp11-connector-sqlite3) ... die Nutzung ist etwas komplexer und die Dokumentation eher schlecht ... aber es lohnt sich aus meiner Sicht, weil man sql abfragen aus c++ Funktionen bauen kann und entsprechend compile time checks bekommt etc.
https://github.com/SRombauts/SQLiteCpp   -&gt; Noch nicht ausprobiert, sieht aber sehr gut aus. Im Gegensatz zu ersten Lib ist diese nur ein Wrapper für Sqlite3 und sehr minimalistisch. Also insgesamt einfacher zu verwenden, dafür ist man halt an Sqlite3 gebunden und hat hat keine compile time checks etc. -&gt; Basierend auf deiner Beschreibung, klingt das nach ner guten Lib für dich

]]></description><link>https://www.c-plusplus.net/forum/topic/351981/linux-suche-einfache-c-bibliothek-mit-datenbankanbindung</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351981/linux-suche-einfache-c-bibliothek-mit-datenbankanbindung</guid><dc:creator><![CDATA[Leon0402]]></dc:creator><pubDate>Sun, 03 Jan 2021 11:32:18 GMT</pubDate></item><item><title><![CDATA[BULK INSERT auf MSSQL - Fehler 4864]]></title><description><![CDATA[@hustbaer Hab lange nichts mehr mit Datenbanken gemacht und hätte erwartet, dass es da mittlerweile für jeden für SQL-Injection anfälligen Kontext eine Standardlösung gibt. Das Problem existiert ja nicht erst seit gestern und gehört meines Wissens immer noch zu den Top Sicherheitsproblemen 
Eine simple und sichere Lösung ist wohl, einfach sicherzustellen, dass die Anwendung stets den Dateinamen kontrolliert. Erlaubt man Anwendern z.B. eine beliebige Datei hochzuladen, die dan via BULK INSERT eingefügt wird, sollte eben nicht der vom Anwender vorgegebene Name verwendet werden, sondern stattdessen ein selbst generierter, temporärer Dateiname.
Bei dynamischen Tabellen- und Spaltennamen kann man zum validieren wohl prüfen, ob die Datenbankobjekte überhaupt existieren (Interessant übrigens, dass man wohl auch eine Tabelle anlegen kann, die &quot;Users; DROP TABLE dbo.Users;&quot; heisst - da vergeht mir schon gleich die Lust, sowas korrekt und sicher selbst zu implementieren, besonders wenn da noch die Regeln für gültige Dateinamen mit reinspielen  ).
]]></description><link>https://www.c-plusplus.net/forum/topic/351908/bulk-insert-auf-mssql-fehler-4864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351908/bulk-insert-auf-mssql-fehler-4864</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Thu, 24 Dec 2020 09:33:34 GMT</pubDate></item><item><title><![CDATA[ER-Modell]]></title><description><![CDATA[Man muss sich hier auf jeden Fall überlegen was &quot;die Klasse&quot; ist. mMn. ist das beste eine Klasse so zu definieren dass in üblichen Fällen ein Schüler der nie sitzen bleibt und nie &quot;versetzt&quot; wird immer in der selben Klasse bleibt.
D.h. die Klasse ist dann vielleicht &quot;2017,3&quot; (unveränderlicher Primärschlüssel).
Diese hat dann verschiedene Attribute wie z.B. &quot;Schuljahr=7&quot; und &quot;Suffix=B&quot; die sich ändern können und aus denen der &quot;Display-Name&quot; gebastelt wird wenn man ihn braucht (&quot;7B&quot;). (Bzw. wenn man will kann man den &quot;Display-Name&quot; auch als persistiertes Attribut abspeichern, aber ich würde das vermeiden so lange es nicht notwendig wird.)
Ein Schüler hat dann ein Attribut &quot;Klasse&quot; wo seine aktuelle Klasse drinnen steht, also in diesem Beispiel &quot;2017,3&quot;.
Änderungen kann man dann mit eigenen Tables tracken. Man kann z.B. für jeden Table einen History-Table anlegen. Der sieht aus wie der primäre Table, bloss dass er zusätzlich noch ein Attribut &quot;Änderungsdatum&quot; hat welches mit zum Primärschlüssel zählt (composite key).
Damit lässt sich für jedes beliebige Datum rekonstruieren ob es einen bestimmten Schüler (aus Sicht der Schule) zu diesem Zeitpunkt schon gegeben hat, in welcher Klasse er damals war, wie die Klasse damals geheissen hat etc.
Bis hierher geht das mit vielen DBMS noch automatisch, z.B. über Trigger die sich darum kümmern dass die nötigen History-Einträge erzeugt werden ohne dass man es überall immer wieder ausprogrammieren muss.
Zusätzlich kann man in solche History-Tables auch weitere Attribute aufnehmen wenn man möchte. z.B. kann man einen Grund für die Änderung reinschreiben. Entweder einfach als Text oder wenn es Sinn macht auch als Verweis auf eine andere Tabelle. Wenn ein Schüler versetzt wird könnte man z.B. eine Tabelle haben wo diese Versetzung als Entity erfasst wird. Die Schüler-History-Tabelle könnte dann ein (nullable) Attribut Versetzungs-ID haben, wo die entsprechende Versetzung verlinkt wird wenn man die Versetzung &quot;manifestiert&quot; (die Klassen-ID der Schüler-Zeile ändert + den dazugehörigen History-Eintrag erzeugt).
Das kann man dann allerdings nicht mehr einfach über Trigger machen.
]]></description><link>https://www.c-plusplus.net/forum/topic/351818/er-modell</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351818/er-modell</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 11 Nov 2020 14:27:44 GMT</pubDate></item><item><title><![CDATA[SQL Datenbank  und performance]]></title><description><![CDATA[@SoIntMan sagte in SQL Datenbank und performance:

oben einfügt

Es gibt kein &quot;oben&quot;, es gibt keine Reihenfolge. Es gibt nur eine Menge von Datensätzen.
]]></description><link>https://www.c-plusplus.net/forum/topic/351675/sql-datenbank-und-performance</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351675/sql-datenbank-und-performance</guid><dc:creator><![CDATA[[[global:former_user]]]]></dc:creator><pubDate>Wed, 30 Sep 2020 12:14:31 GMT</pubDate></item><item><title><![CDATA[SQL Server Tabelle mit Bedingungen]]></title><description><![CDATA[So habe ichs jetzt umgesetzt:
Tabelle Anschluss (ID, Beschreibung)
ID Beschreibung
1  usb
2  com
3  com
...

Tabelle com (fk_anschluss references Anschluss (ID))
ID  Setting1   Setting2 ...
2  'Setting1' 'Setting2' ...
...

Das selbe für die Anderen Anschlüsse auch. Da ich so ja nicht verhindern kann  das in der com Tabelle zb was mit der ID 1 eingetragen wird. Hab ich mir ein Constraint check zusammengebaut wo ich prüfe ob ID UND Bezeichnung in der Anschlusstablelle existieren.
create function fnCheckID (@Input varchar(45), @id int)

returns bit

AS
begin
  declare @Val varchar(45)
  declare @RetVal bit

  select @Val = (select type from Connection c
	where c.idConnection = @id and
	c.type = @Input)

if (@Val is not null)
	set @RetVal = 1
else 
  set @RetVal = 0

return @RetVal
  end

Ist vielleicht etwas umständlich, aber funktioniert soweit.
ABER:
Wird die Bezeichnung in der Tabelle Anschlussart jetzt verändert, dann passts natürlich nicht mehr.
Gibt es die Möglichkeit so ein Constraint in beide Richtungen zu machen? Vielleicht weiß ja einer von euch was.
lg Liz
Edit
Ich glaube ich machs mir da viel zu komlpiziert. Nehme ich die Beschreibung auch noch als Fremdschlüssel in der com Tabelle auf, dann umgehe ich das Problem der inkosistenz. Richtig?
]]></description><link>https://www.c-plusplus.net/forum/topic/351575/sql-server-tabelle-mit-bedingungen</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351575/sql-server-tabelle-mit-bedingungen</guid><dc:creator><![CDATA[Liz]]></dc:creator><pubDate>Wed, 26 Aug 2020 14:53:22 GMT</pubDate></item><item><title><![CDATA[Abfrage über 3 Tabellen, Zeile mit höchstem Wert als Condition bestimmen]]></title><description><![CDATA[@DocShoe sagte in Abfrage über 3 Tabellen, Zeile mit höchstem Wert als Condition bestimmen:

@Swordfish
Keine Ahnung, was du mir sagen willst. Schlechte Laune? Bei Postgres galten CTEs als Optimization Fence, kA, ob das immer noch so ist. Und deshalb muss ich benchmarken, ob die CTE Lösung langsamer ist als die Lösung mit zwei identischen Subqueries. Weiß jetzt echt nicht, wo dein Problem liegt.

No problem at all. Du bestätigst nur das was ich geschrieben habe. Miss die Kacke.
@hustbaer sagte in Abfrage über 3 Tabellen, Zeile mit höchstem Wert als Condition bestimmen:

Das ist natürlich keine Rocket-Science, aber es kostet Zeit.

Ja, das kostet Zeit. Wenn man das so in ein Forum knallt kostet es jedem der es liest Zeit. Ich würde mich sowas nicht trauen bzw. es würde meiner Nächstenliebe zuwider sein.
]]></description><link>https://www.c-plusplus.net/forum/topic/351568/abfrage-über-3-tabellen-zeile-mit-höchstem-wert-als-condition-bestimmen</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351568/abfrage-über-3-tabellen-zeile-mit-höchstem-wert-als-condition-bestimmen</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Mon, 17 Aug 2020 21:26:31 GMT</pubDate></item><item><title><![CDATA[Orm]]></title><description><![CDATA[Hallo Leon0402,
Ich beschäftige mich schon seit geraumer Zeit mit objektorientierten Datenbanken für C++-Klassen. Das Ziel ist ja, Objekt zu speichern ohne sich um das wie zu kümmern.
Schau Dir doch mal GlobalObjects an, vielleicht ist das etwas für Dich. Ist open source und eigentlich schon weit gediehen.
Einen schnellen Überblick bekommst Du über die Videos.
Gruß Helmut
]]></description><link>https://www.c-plusplus.net/forum/topic/351553/orm</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351553/orm</guid><dc:creator><![CDATA[Helmut.Jakoby]]></dc:creator><pubDate>Mon, 03 Aug 2020 13:23:50 GMT</pubDate></item><item><title><![CDATA[DBMS gesucht]]></title><description><![CDATA[@DocShoe sagte in DBMS gesucht:

@john-0
Irgendwie erinnern mich deine Antworten immer an MS-Doku. Technisch korrekt, aber irgendwie nicht zu gebrauchen.

Du bist auf einem Tripp der die Dich in die komplett falsche Ecke führt, sehen willst Du das aber nicht. Weshalb nutzt Du überhaupt ein RDBMS, wenn es eine simple Textdatei auf einem Fileserver auch täte bzw. ein Blob im RDBMs? Die Vorteile eines RDBMS nutzt Du durch Deiner Art und Weise der Nutzung des selben definitiv nicht. Key-Value-Paare legt man in keinem RDBMS ab, denn die „Keys“ gehören in die Tables d.h. der Struktur der Datenbank.
Anstatt nun die Bohrhammer dafür zu nutzen ein Loch zu bohren, dieses anschließend aus zu saugen, dann einen Dübel rein zu stecken und anschließend die Schraube einzuschrauben, hast Du Dich dazu entschlossen mit dem Hammer die Schraube in die Wand zu schlagen. Ja, das geht, aber sinnvoll ist es nicht.
]]></description><link>https://www.c-plusplus.net/forum/topic/351514/dbms-gesucht</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351514/dbms-gesucht</guid><dc:creator><![CDATA[*john 0]]></dc:creator><pubDate>Fri, 17 Jul 2020 05:55:51 GMT</pubDate></item><item><title><![CDATA[SQL Datenorganisation]]></title><description><![CDATA[@manni66
Das macht ja nix, kann man ja per Stored Procedures erschlagen. Muss mich da mal schlau machen.
]]></description><link>https://www.c-plusplus.net/forum/topic/351450/sql-datenorganisation</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/topic/351450/sql-datenorganisation</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 26 Jun 2020 12:38:18 GMT</pubDate></item></channel></rss>