SQL Wie fülle ich die SQL Tabelle aus und lass sie im C# programm anzeigen?

Robymon

Cadet 4th Year
Registriert
Okt. 2014
Beiträge
76
Hei Leute,

steck grad leider bissl fest und find keine antwort auf google :/
Also habe In C#(WPF) ein kleines Programm geschrieben.

Das Programm zeigt die Tabelle die ich im SQL erstellt hab an.

Ich hab natürlich das Programm bis jetzt fertig und verbindet sich auch selbstständig beim öffnen mit dem SQL server.

Tabelle hab ich auch schon erstellt nur noch ausfüllen...

und anzeigen lassen aber wie?

hilfe wäre echt geil ♥
 
Standardvorgehen für alle Sprachen:
- Zum Server verbinden
- Datenbank öffnen
- SQL Query für die gewünschten Inhalte an den Server schicken
- Antwort auswerten -> über Ergebnismenge iterieren und entsprechend handeln (z.B. Ergebnisse ausgeben oder für weitere Berechnung verwenden)
 
Hey Robymon,

Du solltest dir überlegen, eine Datenbankabstraktions-Ebene einzufügen.
Dh. dass du aus deinem Programm KEINE SQL-Statements direkt gegen die Datenbank schickst, sondern nur vordefinierte Klassen verwendest, welche die Arbeit für dich übernehmen. (Etweder sog. Mapper oder ein kleines DB-Framework).

Für kleinere Projekte würde ich dir mal empfehlen, dich in Linq2Sql einzulesen :) Leichtgewichtig und einfach zu verwenden. (Vorausgesetzt du entwickelst mit VisualStudio)

Ansonsten biete Microsoft mit dem EntityFramework auch noch eine richtig massive DB-Schnittstelle.
Unabhängige Produkte gibt's natürlich auch zu hauf: NHibernate oder ActiveRecord fallen mir spontan noch ein.

mfg

Saphirim

PS: Ansonsten sollte dir dieses Code-Snippet alle Fragen beantworten:
Code:
SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;

cmd.CommandText = "SELECT * FROM Customers";
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection1;

sqlConnection1.Open();

reader = cmd.ExecuteReader();
// Data is accessible through the DataReader object here.

sqlConnection1.Close();

Quelle: http://msdn.microsoft.com/en-us/library/fksx3b4f.aspx
 
Zuletzt bearbeitet:
Saphirim schrieb:
Saphirim

PS: Ansonsten sollte dir dieses Code-Snippet alle Fragen beantworten:
Code:
SqlConnection sqlConnection1 = new SqlConnection("Your Connection String");
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;

cmd.CommandText = "SELECT * FROM Customers";
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection1;

sqlConnection1.Open();

reader = cmd.ExecuteReader();
// Data is accessible through the DataReader object here.

sqlConnection1.Close();

Quelle: http://msdn.microsoft.com/en-us/library/fksx3b4f.aspx


Das ist schon richtig so, aber es ist doch "Best Practice" using-Direktiven zu benutzen. Dann würde der gleiche Code so aussehen:

Code:
DataTable dt = new DataTable(); //Der ist von mir, könntest du brauchen um die Daten weiter zu verarbeiten
         
using (SqlConnection sqlConnection = new SqlConnection("Your Connection String"))
{
            using (SqlCommand cmd = new SqlCommand("SELECT * FROM Customers",sqlConnection))
            {
                cmd.CommandType = CommandType.Text;
                sqlConnection.Open();
                SqlDataReader reader = cmd.ExecuteReader();

                //Weiterhin könntest du deine Daten zu einem DataTable speichern, so z.B.:
                dt.Load(reader);

            }
}

Das ist eigentlich der gleiche Code mit der Ausnahme, dass du dich nicht darum kümmern musst die Verbindung zu schließen oder die Objekte freizugeben. Hier mehr Info. Wie gesagt das muss nicht sein, ist aber "Best Practice" weil SQLConnection und SQLCommand beide das Interface IDisposable implementieren.
Außerdem habe ich die Zahl "1" aus dem Variablennamen der SQLconnection entfernt, weil bääh wie konntest du?! :D

Jetzt müsstest du nur noch rausfinden wie du unter WPF einen DataTable am besten visualisierst. Imo ging das unter Winforms recht einfach. Da hat mir WPF eher Kopfschmerzen gemacht.

Btw, falls es sich bei deinen Datenbanktabellen um abgeschlossenne Tabellen handelt die so schnell nicht geändert werden, kann ich dir nur empfehlen dir LINQ to SQL anzugucken. Du wirst es dir danken.

Schau einfach hier.

Viel Erfolg noch und Gruß
 
Zuletzt bearbeitet:
Jetzt müsstest du nur noch rausfinden wie du unter WPF einen DataTable am besten visualisierst. Imo ging das unter Winforms recht einfach. Da hat mir WPF eher Kopfschmerzen gemacht.

Die einfachste Variante ist ein Datagrid.

Code:
<DataGrid x:Name="DeinDataGrid" AutoGenerateColumns="True" ItemsSource="{Binding}" AlternatingRowBackground="AliceBlue"/>

Und dann im Code Teil das: DeinDataGrid.DataContext = Tabelle;
 
Ja, es ist eine DataTable. Ich bin jetzt schlicht davon ausgegangen, dass der Threadersteller eine DataTable verwendet.
 
Ich fasse "callunas" und meine Antwort zusammen:

Erstelle ein DataGrid in deiner WPF-Anwendung:

Code:
<DataGrid x:Name="DeinDataGrid" AutoGenerateColumns="True" ItemsSource="{Binding}" AlternatingRowBackground="AliceBlue"/>

Implementiere folgende Methode:
Code:
public DataTable GetCustomers()
{
      DataTable dt = new DataTable(); 
      using (SqlConnection sqlConnection = new SqlConnection("Dein ConnectionString"))
      {
          using (SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", sqlConnection))
          {
              cmd.CommandType = CommandType.Text;
              sqlConnection.Open();
              SqlDataReader reader = cmd.ExecuteReader();
              dt.Load(reader);
            }
       }
       return dt;
}

Jetzt kannst du das wie folgt an die DataGrid binden:

Code:
DeinDataGrid.DataContext = GetCustomers();

Viel Erfolg!
 
Zuletzt bearbeitet:
Hallo,
ich kann den Beiträgen nichts mehr hinzufügen...AUSSER den Tipp einen O/R Mapper ala Entity Framework zu benutzen. Macht den Zugriff auf die Datenbank deutlich angenehmer. Und du musst dich nicht mit Connections, DataSets, DataTables rumschlagen :)

Greetz
hroessler
 
Zuletzt bearbeitet von einem Moderator:
Das ist eigentlich der gleiche Code mit der Ausnahme, dass du dich nicht darum kümmern musst die Verbindung zu schließen oder die Objekte freizugeben. Hier mehr Info. Wie gesagt das muss nicht sein, ist aber "Best Practice" weil SQLConnection und SQLCommand beide das Interface IDisposable implementieren.
Außerdem habe ich die Zahl "1" aus dem Variablennamen der SQLconnection entfernt, weil bääh wie konntest du?!

Wie ich geschrieben habe, ist die Quelle ein MSDN-Artikel.
Ich habe keine Änderungen am Code vorgenommen ;) und würde meine Benennung auch anders aufbauen.

Using-Direktiven sind sicher sauberer und nützlich, lesbarer und einfacher zu verstehen ist allerdings widerum das Beispiel von MSDN.
 
Zurück
Oben