Announcement

Collapse
No announcement yet.

Datenbankverbindung / DataGridView / TableAdapter

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

  • Datenbankverbindung / DataGridView / TableAdapter

    Hallo,

    ich bin noch relativ neu in der Programmierung und beschäftige mich derzeit mit Datenbanken.
    Nun habe ich folgende Frage bzw. folgendes Problem.
    Wenn bestimmte Sachen getan werden, wird mein DataGridView mit einer bestimmten Tabelle aus meiner Datenbank gefüllt, sieht bei mir so aus:

    dataGridView1.DataMember = "ew_landkreis";
    ew_landkreisTableAdapter.Fill(db_903_test_DataSet. ew_landkreis);

    Ich habe derzeit ca. 5600Tabellen und meine Frage läuft nun darauf hinaus, wenn ich eine Tabelle anzeigen will, brauch ich ja immer diesen TableAdapter. Dafür ziehe ich immer aus der ToolBox die benötigten TableAdapter in meine Entwicklungsumgebung. für meine Anwendung brauch ich von den 5600Tabellen ca. 1200, wenn ich nun 1200 mal nen TableAdapter mir auf die Entwicklungsumgebung ziehe, wird es total unübersichtlich...
    Gibt es dafür nich eine einfachere Lösung, ohne die ganzen TableAdapter immer auf die Entwicklungsumgebung zu ziehen???

    Gruss Stefie

  • #2
    Hallo,
    >..brauch ich ja immer diesen TableAdapter.
    Nein - der TableAdapter aus dem .NET Framework 2.0 ist nur ein <i>typisierter DataAdapter</i> für eine bestimmte Tabelle. Auch im .NET Framework kann mal alternativ mit dem untypisierte DataAdapter sowie mit dem untypisierten DataSet arbeiten, die "alten" Komponenten müssen in Visual Studio 2005 nur einmalig der Toolbox hinzugefügt werden.
    <br>
    Das folgende Beispiel für universell nutzbare Hilfsmethoden verwendet Stored Procedure für die jeweiligen SELECT-Anweisungen, so dass als Parameter nur der Name der Stored Procedure sowie eventuell notwendige Argumente übergeben werden:
    <code>
    <font color="#008000">/// &lt;summary&gt;</font>
    <font color="#008000">/// Mit der Ergebnismenge der Stored Procedure gefülltes DataSet zurückliefern</font>
    <font color="#008000">/// &lt;/summary&gt;</font>
    <font color="#008000">/// &lt;param name="sSP"&gt;Auszuführende Stored Procedure (ohne Parameter)&lt;/param&gt;</font>
    <font color="#008000">/// &lt;returns&gt;DataSet-Instanz mit der Ergebnismenge der Stored Procedure sSP&lt;/returns&gt;</font>
    <font color="#0000FF">public</font> <font color="#008080">DataSet</font> GetDataSetFromSP(<font color="#0000FF">string</font> sSP)
    {
    <font color="#008080">DataSet</font> aDS = <font color="#0000FF">new</font> <font color="#008080">DataSet</font>();
    <font color="#008080">SqlConnection</font> aCon;
    <font color="#008080">SqlCommand</font> aCmd;
    <font color="#008080">SqlDataAdapter</font> aAdp;
    <font color="#0000FF">try</font>
    {
    aCon = <font color="#0000FF">new</font> <font color="#008080">SqlConnection</font>(Common.EnergieBOStaticData.EnergieConStr);
    aCon.Open();
    <font color="#0000FF">try</font>
    {
    aCmd = <font color="#0000FF">new</font> <font color="#008080">SqlCommand</font>();
    aCmd.<font color="#008080">Connection</font> = aCon;
    aCmd.<font color="#008080">CommandType</font> = <font color="#008080">CommandType</font>.StoredProcedure;
    aCmd.CommandText = sSP;
    aAdp = <font color="#0000FF">new</font> <font color="#008080">SqlDataAdapter</font>(aCmd);
    aAdp.Fill(aDS, sSP);
    <font color="#0000FF">return</font> aDS;
    }
    <font color="#0000FF">finally</font>
    {
    aCon.Close();
    }
    }
    <font color="#0000FF">catch</font> (<font color="#008080">SqlException</font> aSqlExc)
    {
    OSLogError.LogSqlException(aSqlExc);
    <font color="#0000FF">throw</font> aSqlExc;
    }
    }

    <font color="#008000">/// &lt;summary&gt;</font>
    <font color="#008000">/// Mit der Ergebnismenge der Stored Procedure gefülltes DataSet zurückliefern, wobei die</font>
    <font color="#008000">/// gespeicherte Prozedur einen einzigen Parameter vom Typ INTEGER erwartet.</font>
    <font color="#008000">/// &lt;/summary&gt;</font>
    <font color="#008000">/// &lt;param name="sSP"&gt;Name der auszuführende Stored Procedure&lt;/param&gt;</font>
    <font color="#008000">/// &lt;param name="sIntParamName"&gt;Name des Integer-Parameters&lt;/param&gt;</font>
    <font color="#008000">/// &lt;param name="iParamValue"&gt;Wert des Parameters&lt;/param&gt;</font>
    <font color="#008000">/// &lt;returns&gt;DataSet-Instanz mit der Ergebnismenge der Stored Procedure&lt;/returns&gt;</font>
    <font color="#0000FF">public</font> <font color="#008080">DataSet</font> GetDataSetFromIntParamSP(<font color="#0000FF">string</font> sSP, <font color="#0000FF">string</font> sIntParamName, <font color="#0000FF">int</font> iParamValue)
    {
    <font color="#008080">DataSet</font> aDS = <font color="#0000FF">new</font> <font color="#008080">DataSet</font>();
    <font color="#008080">SqlConnection</font> aCon;
    <font color="#008080">SqlCommand</font> aCmd;
    <font color="#008080">SqlDataAdapter</font> aAdp;
    <font color="#0000FF">try</font>
    {
    aCon = <font color="#0000FF">new</font> <font color="#008080">SqlConnection</font>(Common.EnergieBOStaticData.EnergieConStr);
    aCon.Open();
    <font color="#0000FF">try</font>
    {
    aCmd = <font color="#0000FF">new</font> <font color="#008080">SqlCommand</font>();
    aCmd.<font color="#008080">Connection</font> = aCon;
    aCmd.<font color="#008080">CommandType</font> = <font color="#008080">CommandType</font>.StoredProcedure;
    aCmd.CommandText = sSP;
    <font color="#008080">SqlParameter</font> aParam = aCmd.Parameters.Add(sIntParamName, <font color="#008080">SqlDbType</font>.Int);
    aParam.Value = iParamValue;
    aAdp = <font color="#0000FF">new</font> <font color="#008080">SqlDataAdapter</font>(aCmd);
    aAdp.Fill(aDS, sSP);
    <font color="#0000FF">return</font> aDS;
    }
    <font color="#0000FF">finally</font>
    {
    aCon.Close();
    }
    }
    <font color="#0000FF">catch</font> (<font color="#008080">SqlException</font> aSqlExc)
    {
    OSLogError.LogSqlException(aSqlExc);
    <font color="#0000FF">throw</font> aSqlExc;
    }
    }
    </code&gt

    Comment


    • #3
      Hi,

      das is ja richtig cool.
      Hab's gleich ausprobiert und es funzt und ist zudem auch noch einfach.
      Dank dir

      Comment

      Working...
      X