Announcement

Collapse
No announcement yet.

Arbeiten mit MSSQL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Arbeiten mit MSSQL

    Tagchen Xperten,

    es ist mir ja bald peinlich dies zu fragen, aber nach langer, ergebnisloser googelei bleibt mir wohl nichts anderes übrig:

    Ich möchte gerne in C# die Verbindung zu einer Datenbank herstellen
    Was ich jetzt gern hätte (Die Datenbank ist eine MSQL Datenbank):

    Einen kleinen Beispielcode mit folgenden Eigenschaften:
    a) Verbinde zu Datenbank XY (Am besten mit der Annahme, dass die DB nicht local liegt, sondern auf einem anderen Rechner im Netz
    b) Eine Beispiel-Query (Auf die reinen SQL-Befehle sei nicht viel Wert gelegt).

    Oder vielleicht einen brauchbaren Weblink (ich habe leider keinen finden können)

    MfG
    Christoph
    PS.
    1) Ist es nötig, die DB unter Verwaltung->ODBC einzurichten?
    2) wozu trägt man die DB dort eigentlich ein?

  • #2
    So hart es vielleicht im ersten Augenblick klingt: Kaufe Dir ein Buch... Unter Net solltest Du bei Datenbanken mit Ado.Net arbeiten. Speziell für den SQL-Server gibt es da die Komponenten SQLConnection, SQLDataadapter, SQLCommand, Dataset, womit Du das gesuchte hinbekommst. ODBC ist da gar nicht notwendig.<p>
    Warum ein Buch? Unter Ado-Net hat sich bezüglich der Herangehensweise vieles grundsätzlich geändert. Ein kleines Beispiel bringt Dich nicht weiter.<p>
    Mario<p>
    PS: Ich habe die Beispiel, aber leider nur für Delph
    Schöne Grüße, Mario

    Comment


    • #3
      Also im Moment geht es mir eigentlich um nichts grosses, denn ich möchte eigentlich nur zu der DB Verbinden, um zu gucken, ob diese verfügbar ist, um dann dort ein paar Tabellen anzulegen.

      derzeit geschieht das anlegen mittels eines Batch Scriptes.

      Optional wären die vom Batch-Script ausgeführten .SQL Scripte natürlich gerne mittels CSharp eingebunden, aber wenns denn allzu kompliziert ist.

      Insgeheim frage ich mich, was denn nun daran so schwer sein soll, denn ich betrachtete das Problem bislang als "gewusst wie"-Problem, denn was macht man in der Regel schon. MAn führt auf der DB Operationen aus und bekommt Result sets zurück, die es auszuwerten gilt. In PHP einfach, in Java teils knifflig und gewusst wie. Ich kann mir kaum bis gar nicht vorstellen, dass es in C# anders sein soll.

      Also wenn das Beispiel Delphi ist, könnte mich das evt. schon voranbringen. Die sachen, die ich bisher fand waren eher MSSQL unbezogen und in VB

      Comment


      • #4
        Beispiel in VB/C# können praktisch 1:1 in Delphi verwendet werden.
        Es muß "nur" die VB/C#-Syntax nach Delphi umsetzt werden.

        Wenn man in .NET-Entwickeln will ist es <b>zwingend</b> notwendig C# zu können und Grundkenntnisse der VB.NET-Syntax zu kennen, da für diese Sprachen von MS tausende Beispiele gibt

        Comment


        • #5
          leider habe ich nie mit VB gecodet und war bislang nur in Java ähnlichen Sprachen unterwegs: Java, C/C++, C#, Php

          Delphi auch, aber da hat mir die Syntax nicht sonderlich gefallen

          Dass man da nur die Syntax umstellen muss ist mir schon klar, nur leider beherrsche ich die nicht.

          Würd ichs, würd ich auch nicht unter C# fragen, sondern unter .NET allgemein

          Mir geht es übrigens explizit um ein MSSQL (über eine installeirte MSDE) Beispiel und nicht mysql oder sonstwas

          Comment


          • #6
            Hallo,
            <br>
            &gt;Einen kleinen Beispielcode mit folgenden Eigenschaften: ....
            </br>
            die Antwort hängt davon ab, ob eine Entwicklungsumgebung wie VS.NET genutzt wird oder ab alles mit dem Kommandozeilen-Kompiler erledigt werden soll. Im Fall der IDE kümmern sich die Dialoge und die Wizard um das Fundament, im Fall der Kommandozeile müsste man alles von Hand selbst schreiben.
            <br>
            Der Verbindungsaufbau zu einer MS SQL Server-Datenbank, die auf einem externen Server läuft, könnte zum Zugriff über Datenbankbenutzername+Passwort so aussehen: Über <b>data source</b> wird der Server definiert, auf dem der MS SQL Server läuft. Mit <b>initial catalog</b> wird die Datenbank adressiert.
            <code>
            <font color="#003399"><i>// SqlCommand + SqlDataReader lesen Werte aus der Ergebnismenge aus</i></font>
            <b>string</b> sConStr = <font color="#9933CC">&quot;data source=192.168.10.1;initial catalog=Northwind;integrated security=SSPI&quot;</font>;
            SqlConnection aCon = <b>new</b> SqlConnection(sConStr);
            <b>string</b> sSQL = <font color="#9933CC">&quot;SELECT EmployeeID, LastName FROM Employees&quot;</font>;
            SqlCommand aCmd;
            <b>try</b>
            {
            aCon.Open();
            aCmd = <b>new</b> SqlCommand (sSQL, aCon);
            SqlDataReader aDR = aCmd.ExecuteReader();
            <font color="#003399"><i>// ListView als Ersatz für ein DataGrid verwenden</i></font>
            ListView1.Clear();
            ListView1.View = View.Details;
            ListView1.Columns.Add(<font color="#9933CC">&quot;EmployeeID&quot;</font>, 75, HorizontalAlignment.Left);
            ListView1.Columns.Add(<font color="#9933CC">&quot;LastName&quot;</font>, 100, HorizontalAlignment.Left);
            <b>while</b> (aDR.Read())
            {
            ListViewItem aLVItem = <b>new</b> ListViewItem();
            <font color="#003399"><i>// Wert der aktuellen Spalte des SqlDataReader-Datensatzes auslesen</i></font>
            aLVItem.Text = aDR[0].ToString();
            aLVItem.SubItems.Add(aDR[1].ToString());
            ListView1.Items.Add(aLVItem);
            }
            aDR.Close();
            StatusBar1.Text = sSQL;
            }
            <b>catch</b> (System.Exception err)
            {
            MessageBox.Show(<font color="#9933CC">&quot;Exception: &quot;</font> + err.Message, <font color="#9933CC">&quot;Oops&quot;</font>, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            <b>finally</b>
            {
            aCon.Close();
            }
            </code&gt

            Comment


            • #7
              Herr Kosch, ich hab mal eine Frage zu dem Beispiel. Warum nehmen sie einen DataReader? Damit machen Sie doch den Vorteil von ADO.NET (Verbindungsloses Arbeiten) gegenüber ADO kaputt. Besser ist doch eine DataTabe zurückzuliefern, die man mit foreach durchgeht.

              Andr&#233

              Comment


              • #8
                Hallo,

                der Zeitbedarf des Füllen des ListViews über den DataReader ist kürzer als der Zeitbedarf für das Füllen der DataTable im DataSet. Das DataSet hat nur dann Vorteile, wenn man nach dem Einlesen der Daten aus der Datenbank im Offline-Modus darauf wiederholt zugreifen muss. Wenn es aber nur darum geht, ein Control einmalig mit Daten zu füllen (ohne die Bequemlichkeit der Datenbindung zu nutzen), ist der DataReader unschlagbar :-

                Comment

                Working...
                X