So erstellen Sie eine generische Liste, und füllen Sie mit einer Select-SQL-Abfrage in c#

Arbeite ich mit C # in Visual Studio Express 2012. Ich arbeite ausschließlich mit desktop-Anwendungen.
  Als Datenbank verwende ich MySQL

  Die Verbindung zwischen der Datenbank und MySQL funktioniert perfekt.

  Meine Frage ist darum, die Suche und das Ergebnis zurückgeben.

  Von allen Beispielen, die ich gesehen habe, der häufigste ist das erstellen einer Methode in meiner MySQL-Klasse enter code hereVerbindung, die zurückkehren wird eine Liste mit dem suchergebnis. Ich weiß wirklich nicht, ob dies konzeptionell mehr korrigieren, aber es scheint sehr annehmbar.

  ich habe eine Suche, liefert alle Kunden aus meiner Tabelle. Aber meine große Frage ist: wie machen diese generische Methode?

  ZB

  Meine form hat einen button, der löst das Ereignis click:

dbConnect = new DBConnect();
dbConnect.OpenConnection();
private List<Clients> listSQLQuery; 
listSQLQuery = dbConnect.Select("select * from  clients");
datagridview.DataSource = listSQLQuery;

Meine Methode dboConnect.Wählen Sie() oben verwendet:

public List<Clients> Select(string query)
{        


    //Create a list to store the result
    List<Clients> list = new List<Clients>();
   Clients clients = new Clients();


    //Open connection
    if (this.OpenConnection() == true)
    {
        //Create Command
        MySqlCommand cmd = new MySqlCommand(query, connection);
        //Create a data reader and Execute the command
        MySqlDataReader dataReader = cmd.ExecuteReader();

        //Read the data and store them in the list
        while (dataReader.Read())
        {
            clients.Id = dataReader["Id"].ToString();
            clients.Name = dataReader["Name"].ToString();
            list.Add(cliente);
        }

        //close Data Reader
        dataReader.Close();

        //close Connection
        this.CloseConnection();

        //return list to be displayed
        return list;
    }
    else
    {
        return list;
    }
}

Und schließlich, meine Klasse Kunden

public class Clients
{
    public string Id { get; set; }
    public string Name { get; set; }
}

Das alles funktioniert, aber ist sehr spezifisch für eine Abfrage mit einem Client.

  nun, Wenn ich einen Anruf listSQLQuery=dbConnect.Select("select * from Produkte") diese Methode wird nicht funktionieren, weil es war gebaut als Rückgabe eine Liste der Clients und nicht der Produkte.

  ich weiß nicht, wenn ich könnte klar sein, in meiner Frage, aber ich wünschte, ich könnte telefonieren möchten, ohne sich sorgen, wenn seine gonna ein Kunde, ein Produkt oder ein Zimmer.

Etwas wie dieses:

listSQLQuery.dbConnect.Select("select * from clients");
listSQLQuery.dbConnect.Select("select * from products");
listSQLQuery.dbConnect.Select("select * from rooms");

   gibt es einen Weg, um eine generische Liste zurück, ohne sich Gedanken über die Art der listQuerySQL? Ich möchte nur, binden Sie diese Liste, um ein datagridview.

Ich bin ziemlich Anfänger in C#, so dass ich nicht wissen, etwas über LINQ, Entity Framework...

  • Ja, der Linq und EF wird eine gute Wahl sein! Verbringen Sie einige Zeit, um es zu lernen und Sie werden nie bedauern über diese.
  • Wenn Sie möchten, mit Hilfe der Tabelle die Spalten als Objekte, die Sie sollten lernen, über Linq und EF. Dies wird sehr hilfreich sein in Ihrem Fall.
  • möglich, Duplikat der C# - IDataReader zu-Objekt mapping, die Verwendung von Generika
InformationsquelleAutor user1848998 | 2012-11-24
Schreibe einen Kommentar