MSSQL C# Einfügen von Abhängigkeiten, Probleme mit ID Vergleich

Kai_Jack

Erfahrenes Mitglied
Hallo mal wieder,

gibt es irgendwo ein Beispiel für einen Datenbankzugriff IN C# MSSQL, wo folgendes getan wird, ich finde kein nützliches Beispiel: Punkt 1 und 2 gehen schon

  1. das geht schon !! In eine Tabelle schreiben. Diese Tabelle soll nur eine Id haben und einen Namen
  2. das geht schon !! Einen Namen eingeben in diese Tabelle, wobei die ID immer wieder eigenständig erzeugt wird
  3. das geht nicht !! Nun in einer anderen Tabelle z.B. mehrere Punkte erzeugen, die aber abhängig sind von der ersten Tabelle, der Name Projekt_1 (Tabelle 1) wird erzeugt und soll z.B. 10 Punkte haben in (Tabelle 2) die über primary und foreign zusammenhängen. Die Anweisung der keyabhängigkeiten reicht mir auch schon aus


Gruß Jack :google: Ich finde nichts :mad:
 
Hi,
Wo genau liegt dein Problem?
Beim SQL-Query oder beim Ablauf im Programm?

schon mal so als Anstoß:
schau dir mal die Klassen OleDBCommand sowie OleDBParameter an.
 
Dein Problem hat nichts mit C# zu tun, sondern mit SQL.

Insert-Statement

DB-Zugriff:
Code:
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

SqlCommand comm = new SqlCommand(commandText,conn);

int affectedRows = comm.ExecuteNonQuery();

conn.Close();
 
Danke schonmal,

bringt mich leicht weiter, denke das ist der richtige Weg ( Der Link ).

Falls euch noch was einfällt, bin ich sehr dankbar.


Es hat aber auch mit C# zu tun, aber ist auch egal, hauptsache es läuft irgendwann.



Gruß Jack und Danke
 
Zuletzt bearbeitet:
Ablauf im Programm auch.
Folgendes habe ich mir gedacht: Ich erzeuge zwei Klassen, für jede Tabelle eine. In den Klassen erzeuge ich quasi die Einträge in die Database. Dann irgendwo, z.B. ein Button "Projekt erzeugen" hinzufügen, und dann in die Button_Click eine Instanz der nötigen Klasse erzeugen. Ist der Gedankengang richtig, oder wieder zu AMATEUR.

Gruß Jack
 
so umständlich brauchst du es gar nicht machen.UND es ist in C# genauso einfach wie in php.

Code:
int iID = 1;
string strName = "test";
OleDBCommand oleCommand = new OleDBCommand();
oleCommand.CommandText = "INSERT INTO mytable (id, name) VALUES (?, ?)"
OleDBParameter oleParam = new OleDBParameter("id", iID);
oleCommand.Parameters.Add(oleParam);
oleParam = new OleDBParameter("name", strTest);
oleCommand.Parameters.Add(oleParam);
int iAffectedLines = oleCommand.ExecuteNonQuery();  // führt den Command aus und die die betroffenen Zeilen zurück
so weit bist du ja schon, wie du ja beschrieben hast (kann bei dir auch etwas anders sein, da es verschiedene Methode gibt)
Code:
if(iAffectedLines > 0)
{
int iID = 1;
string strName = "test";
for(int i = 0; i < 10; i++)
{
OleDBCommand oleCommand = new OleDBCommand();
oleCommand.CommandText = "INSERT INTO mytable2 (id, name, mytableid) VALUES (?, ?, ?)"
OleDBParameter oleParam = new OleDBParameter("id", i);
oleCommand.Parameters.Add(oleParam);
oleParam = new OleDBParameter("name", strTest + i.ToString());
oleCommand.Parameters.Add(oleParam);
oleParam = new OleDBParameter("mytableid", iID);
oleCommand.Parameters.Add(oleParam);
oleCommand.ExecuteNonQuery();
}
}
Falls die ID der ersten Tablle nicht über dein Programm ondern über den SQL Server erzeugt wird, muss du noch zusätzlich ein SELECT einfügen, mit dem du die ID des neuen Datensatzen abfragst
 
Hammer hart, vielen Dank!

Ich weiss gar nicht was ich sagen soll, aber hier geht halt nur 1000 x Danke.


Ich weiss das zu schätzen, man, wenn man sich an was festbeisst sieht man den Wald manchmal vor Bäumen nicht mehr.

Gruß Jack und Vielen Dank, hast mir sehr geholfen.
 
Ach so, das ist natürlich nicht für den MSSQL Server gültig, sondern für MySQL, aber das umschreiben ist ja wohl nicht schwer, statt oledb quasi sql. Ich arbeite auch mit dem Adapter.

Gruß Jack
 
Tach

Hab mir das noch nicht angeschaut, aber die ODBC.. Klassen sollten auf ähnlich Weise funktionieren.
Und woweit ich mich recht entsinn, kann man auf eine MySQL DB ja sehr bequem zugreifen.
 
Funktionieren alle gleich, da zb der OleDbCommand das gleiche Command-Interface implementiert, als zB de SqlCommand.

Lediglich die SQL-Statements müssen an die jeweiligen Datenbank (eigentlich an das DBMS) angepasst werden.
 
Zurück