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:
 

Nico Graichen

Erfahrenes Mitglied
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.
 

broetchen

Erfahrenes Mitglied
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();
 

Kai_Jack

Erfahrenes Mitglied
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:

Kai_Jack

Erfahrenes Mitglied
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
 

Nico Graichen

Erfahrenes Mitglied
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
 

Kai_Jack

Erfahrenes Mitglied
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.
 

Kai_Jack

Erfahrenes Mitglied
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
 

Nico Graichen

Erfahrenes Mitglied
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.
 

Norbert Eder

Erfahrenes Mitglied
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.
 

Kai_Jack

Erfahrenes Mitglied
Vielen Dank nochmal an ALLE für die Mühe.



Gruß Jack :)

(!)

Code:
P.s.: Das Tutorial von Norbert zum Datenaustausch zwischen zwei 
Formen fand ich sehr gelungen. Gibts so was auch für MSSQL-Geschichten ?

Zum Tutorial von Norbert Eder
 
Zuletzt bearbeitet:

Reverent

Erfahrenes Mitglied
Hallo Leute,
ich habe mir das Tutorial von Norbert auch durchgelesen und es ist ohne Frage gut, ich habe da aber noch eine Frage und zwar:
zu diesem Zitat von Norbert
Es ist zwar - aus Sicht der OOP - keine schöne Lösung, soll aber prinzipiell mal zeigen, wie Objektreferenzen gesetzt werden, Properties erstellt werden usw.
Was wäre den eine schöne Lösung aus Sicht der OOP?

Ich habe schon gegoogelt und auch unter Codeprojekt gesucht aber nichts gefunden, könntet Ihr mir vielleicht ein paar Stichpunkte geben, was den schöner wäre.

Bis Dann
 

Kai_Jack

Erfahrenes Mitglied
Ja, das habe ich gar nicht gesehen, diesen Satz. Aber ich hatte das Gefühl, das Beispiel wäre auf jeden Fall OOP, und gar nicht so schlecht. Also jetzt will ichs aber auch mal wissen.


Na Norbert, wie schauts ?


Gruß Jack
 

Forum-Statistiken

Themen
272.356
Beiträge
1.558.615
Mitglieder
187.832
Neuestes Mitglied
SirrDansen