.NET & C#
Von: Τоnі, 21.7.2009 15:54 Uhr
Guten Tag!

Ich bin ganz neu auf dem Gebiet von C# und MS SQL Server und wollte mit C# ein Programm schreiben, dass auf eine Datenbank des SQL Servers von Microsoft zugreift. Allerdings habe ich überhaupt keine Ahnung wie ich das anstellen soll. Im Internet habe ich zwar schon einiges gefunden aber ich komme da immer nicht weiter. Es wäre toll, wenn ihr evtl einen link empfehlen könntet, wo sowas von der Erstellung der Datenbank bis zum Zugriff mit C# Code verständlich beschrieben steht oder vllt. kann das ja auch mal jemand ganz einfach an einem Beispiel selbst erklären... Jedenfalls wäre ich über eure Hilfe diesbezüglich sehr dankbar!

Mit freundlichen Grüßen
Toni



  1. Antwort von Јоеү 1
    • von Τоnі 0
      Re^2: MS SQL Server mit C# verbinden und auslesen
      @Joe & Frohsinn

      Vielen Dank!
      Ich werde damit erst einmal versuchen etwas hinzubekommen.


      Gruß
      Toni
    • von Τоnі 0
      Re^3: MS SQL Server mit C# verbinden und auslesen
      Hallo nochmal!

      Also ich habe bisher leider nur die Verbindung von C# zum SQL Server hinbekommen. Hier erstmal der Quelltext.

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Linq;
      using System.Text;
      using System.Windows.Forms;
      using System.Data.SqlClient;        //Datenprovider für den SQL Server
      
      
      namespace CNC_Verwaltung
      {
          public partial class Form1 : Form
          {
              public Form1()
              {
                  InitializeComponent();
      
                  //Datenbankverbindung herstellen
                  try
                  {
                      SqlConnection con = new SqlConnection();
                      con.ConnectionString = "Data Source=(local);" +                     //IP-Adresse des SQL Servers angeben!
                                             "Initial Catalog=CNC-Programmverwaltung;" +   //Datenbankname
                                             "Integrated Security=sspi";          //Windows Benutzeranmeldedaten verwenden     
                     
                      con.Open();//Die Verbindung öffnen
      
                      //Felder füllen
                      string strSQL = "SELECT Versions-Nr FROM Version";
                      SqlCommand cmd = new SqlCommand(strSQL, con);
                      string Text = Convert.ToString(cmd.ExecuteScalar());
      
                      ListBox.Lines = Text;
      
                      //}                
                  }
                  catch (Exception e)
                  {
                  }
      
                  
              }
      


      Ich wollte die Datenbankanbindung sofort herstellen, wenn das Programm geöffnet wird und dann die Felder (wie z.B. eine ListBox) mit den ausgelesenen Werten füllen. Leider bekomme ich immer nur eine Fehlermeldung "Eine implizite Konvertierung vom Typ "string" in "string[]" ist nicht möglich". Wie kann ich aber die Felder mit speziellen Daten füllen und auch auswählbar machen? Bitte helft mir!

      Danke!
      Toni
    • von Јоеү 1
      Re^4: MS SQL Server mit C# verbinden und auslesen
      Hi,
      einer Textbox den Namen "Listbox" zu geben obwohl es so etwas als Control-Klasse gibt, ist schon einmalig.

      ListBox.Lines = Text;
      //geht nicht weil Text=String ist und Lines=array von Strings ist

      ListBox.Text=Text; //Das geht

      Das sind ganz grundlegende Basics die du erstmal lernen mußt. Das kann man nicht in einem Forum sondern nur mit einem Buch, Geduld und viel Lust.

      Gruss
      Joey
    • von Τоnі 0
      Re^5: MS SQL Server mit C# verbinden und auslesen
      Ohhh... stimmt!
      Also ich habe da ja so ein Tutorial in einem Buch, mit dem ich das ganze verstehen will. Nur leider bekomme ich die Fehlermeldung, dass ich keine rechte habe. Ich habe es einfach mal mit der NORTHWIND Datenbank versucht. Also der gleiche Quelltext nur mit anderer Datenbank und ohne Exception. Die Fehlermeldung bekomme ich dann bei con.open.
      Muss ich da evtl bei dem SQL Server noch etwas eingeben?

      Hab es auch schon so versucht:
      Wenn ich die Datenbank in C# über Daten --> Datenquelle hinzufüge, dann geht das alles. Aber mit meiner Datenbakn
      geht das dann nicht. Da kommt die Fehlermeldung:

      Die physikalische Datei "C:\CNC_Programmverwaltung.mdf" kann nicht geöffnet werden. Betriebssystemfehler 5: "5(Zugriff verweigert)". Fehler beim Anfügen einer automatisch benannten Datenbank für die Datei C:\CNC_Programmverwaltung.mdf. Eine Datenbank mit diesem Namen ist bereits vorhanden, die angegebene Datei kann nicht geöffnet werden, oder sie befindet sich in der UNC-Freigabe.
    • von Τоnі 0
      Re^6: MS SQL Server mit C# verbinden und auslesen
      Guten Morgen!

      So... ich habe bisher folgenden Quelltext, mit dem ich schon Daten aus der Datenbank auslesen könnte, laut diversen Quellen:

       try
                  { //Datenbankverbindung herstellen
                      SqlConnection con = new SqlConnection();
                      con.ConnectionString = "Data Source=.\\SQLEXPRESS;" +
                                             "Initial Catalog=CNC_ProgrammverwaltungDB;" + 
                                             "Integrated Security=sspi";
      
                      SqlDataAdapter da = new SqlDataAdapter("SELECT [CNC-Prog-Nr] FROM Programm ", con);
      
                      DataSet ds = new DataSet();      
      
                      if (con.State == ConnectionState.Closed)
                      { //Falls Verbindung schon offen                             
                          con.Open();
                          da.Fill(ds, "Version");
                          con.Close();                   
                      }
      
       
                      CNCProgNrTBx.Text = ???;
                      
                  } //Falls Datenbankverbindung nicht möglich
                  catch (Exception)
                  {
                      MessageBox.Show("Datenbankverbindung konnte nicht hergestellt werden!", "Fehler", MessageBoxButtons.OKCancel);
                  }
      
      


      Allerdings weiß ich nun nicht wie Beispielsweise ein einzelnes Feld in eine TextBox lesen kann, wie man im Quelltext erkennt. Kann mir jemand dabei nochmal helfen? Danke!


      Mit freundlichen Grüßen
      Toni
    • von Τоnі 0
      Re^7: MS SQL Server mit C# verbinden und auslesen
      Guten Morgen!

      Hat denn keiner eine Idee?

      Mit freundlichen Grüßen
      Toni
    • Re^8: MS SQL Server mit C# verbinden und auslesen
      Hallo!
      Schau' Dir bitte nochmal den Link in der Antwort von Joey vom 21.7. an.
      Dieser Link verweist doch schon auf die entsprechende Stelle im eBook, an der DataAdapter beschrieben werden.
      Was möchtest Du denn noch?

      Gruß,
      Martin
    • von Τоnі 0
      Re^9: MS SQL Server mit C# verbinden und auslesen
      Ja stimmt schon aber manchmal sieht man den Wald vor lauter Bäumen nicht. Danke jedenfalls nochmal für eure Unterstützung!!! Ich setze den Quellcode einfach nochmal als abschließendes Ergebnis mit rein:

      //Datenprovider für den SQL Server
          using System.Data.SqlClient;   
      
          public partial class ProgrammverwaltungDlg : Form
          {
              public ProgrammverwaltungDlg()
              {
                  InitializeComponent();            
      
                  connect();
                  //DataSet mit Daten füllen   
                  DataSet ds = new DataSet();     
                  //SQL Abfrage
                  SqlDataAdapter da = new SqlDataAdapter("SELECT [CNC-Prog-Nr] FROM Programm ", con);
                  //lokalen Speicher mit Ergebnis der SELECT-Abfrage füllen
                  da.Fill(ds, "AbfrageCNCProgNr");
                  //Datenquelle an BindingSource anbinden
                  bindingSource1.DataSource = ds;
                  bindingSource1.DataMember = "AbfrageCNCProgNr";
                  //Texteigenschaft der TextBox an BindingSource binden
                  CNCProgNrTBx.DataBindings.Add("Text", bindingSource1, "CNC-Prog-Nr");                           
              }
      
              //Datenbankverbindung herstellen
              SqlConnection con = new SqlConnection();
      
              //Verbindung zum Sql Server herstellen
              private void connect()
              {
                  //SQL Server
                  con.ConnectionString = "Data Source=.\\SQLEXPRESS;" +
                                         //Datenbankname
                                         "Initial Catalog=CNC_ProgrammverwaltungDB;" +
                                         //Windows Benutzeranmeldedaten 
                                         "Integrated Security=sspi";
                  try
                  {   //Datenbankverbindung herstellen
                      if (con.State == ConnectionState.Closed)
                      { //Falls Verbindung schon offen  
                          //Verbindung öffnen
                          con.Open();                    
                      }
                  }
                  catch (Exception) //Falls Datenbankverbindung nicht möglich
                  {   //Ausgabe einer Fehlermeldung  
                      MessageBox.Show("Datenbankverbindung konnte nicht hergestellt werden!", "Fehler", MessageBoxButtons.OKCancel);
                  }
                  finally
                  {
                      con.Close();                    //Verbindung schließen
                  }
              }
      

  2. Antwort von frоһѕіnn (abgemeldet) 1
    Re: MS SQL Server mit C# verbinden und auslesen et
    Hallo Toni!

    Die Technologie mit der man unter .net gewöhnlich auf SQL-Server zugreift heißt: ADO.NET.

    http://de.wikipedia.org/wiki/Ado.net

    Ganz, ganz stark vereinfacht wird mittels dieser Klassen eine Connection (benötigt einen Connection-String) installiert, mit der man dann Commands absetzen, oder via Reader / DataAdapter Daten auslesen kann.

    http://books.google.at/books?id=QildpLBSGv8C&pg=PA16...

    http://books.google.at/books?id=ESQGvfI08W0C&pg=PA3&...


    LG,
    frohsinn