Announcement

Collapse
No announcement yet.

Ergebnis von myCommand.ExecuteReader() als Rückgabewert?

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

  • Ergebnis von myCommand.ExecuteReader() als Rückgabewert?

    Hallo!

    Ich würde in meinem C# Projekt gerne die SQL Abfragen auslagern, um Redundanzen zu vermeiden:

    [highlight=c#]
    public SqlDataReader selectSql(string connectionString, string selectSQLStatement)
    {
    SqlDataReader reader;

    using (SqlConnection myConnection = new SqlConnection(connectionString))
    {
    myConnection.Open();
    SqlCommand myCommand = new SqlCommand(selectSQLStatement, myConnection);
    reader = myCommand.ExecuteReader();

    myConnection.Close();
    }

    return reader;
    }
    [/highlight]

    Mit dem Rückgabewert dieser Methode kann man leider nichts mehr anfangen, da die Verbindung ja beendet wurde. Ist es möglich das Ergebnis der Abfrage anders zurück zu liefern?

    Vielen Dank!

  • #2
    Du kannst deine Elemente ja auch gleich dort auslesen mit dem Reader und diese in eine List<Object> werfen. Diese gibst Du dann zurück.

    [highlight=c#]
    public IList<Object> selectSql(string connectionString, string selectSQLStatement)
    {
    SqlDataReader reader;
    IList<Object> result = new List<Object>();

    using (SqlConnection myConnection = new SqlConnection(connectionString))
    {
    myConnection.Open();
    SqlCommand myCommand = new SqlCommand(selectSQLStatement,myConnection);
    reader = myCommand.ExecuteReader();

    //Exemplarisch
    //while(reader.Read())
    //result.Add(reader.CurrentObject);

    myConnection.Close();
    }

    return result;
    }[/highlight]

    Das ist nicht der einzige wahre Ansatz Es kommt auch darauf an was du kapseln möchtest.

    Comment


    • #3
      Super, das ist es.
      Ich hatte auch schon daran gedacht den reader gleich dort auszulesen, aber ich wusste nicht wie ich die Datan flexibel speichern kann (da evtl. unterschiedlich viele Spalten...).
      Vielen Dank für den Tip!

      Comment

      Working...
      X