it-swarm.com.de

Werte aus der SQL-Datenbank in C # lesen

ich habe gerade angefangen, C # zu lernen, und ich kann ohne Probleme Daten in die Datenbank schreiben. Aber ich habe Probleme mit dem Lesen, die SQL-Ausführung läuft gut, aber ich habe Probleme mit der Speicherung. Wie würde ich die vier Spalten speichern, die zurückgegeben werden sollen, und sie als Meldungsfeld anzeigen? Vielen Dank.

SqlCommand myCommand = new SqlCommand("select * from Requests where Complete = 0", myConnection);
SqlDataReader myReader = myCommand.ExecuteReader();
while (myReader.Read())

Console.WriteLine(myReader["Username"].ToString());
Console.WriteLine(myReader["Item"].ToString());
Console.WriteLine(myReader["Amount"].ToString());
Console.WriteLine(myReader["Complete"].ToString());
23
Paul

Ein Problem sind fehlende Zahnspangen nach der Weile

while (myReader.Read())
{  // <<- here
    Console.WriteLine(myReader["Username"].ToString());
    Console.WriteLine(myReader["Item"].ToString());
    Console.WriteLine(myReader["Amount"].ToString());
    Console.WriteLine(myReader["Complete"].ToString());
}  // <<- here

wenn Sie die geschweiften Klammern überspringen, wird in jeder Schleife nur die erste Zeile verarbeitet. Der Rest wird nach der Schleife verarbeitet. myReader liegt hinter der letzten Zeile.

29
Albin Sunnanbo

Vergessen Sie nicht, den using(){}-Block zu verwenden:

using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand("select * from Requests where Complete = 0", connection))
{
    connection.Open();  
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            Console.WriteLine(reader["Username"].ToString());
            Console.WriteLine(reader["Item"].ToString());
            Console.WriteLine(reader["Amount"].ToString());
            Console.WriteLine(reader["Complete"].ToString());
        }
    }
}
19
abatishchev

Persönlich würde ich eine Klasse mit 4 Eigenschaften (mit übereinstimmenden Namen und Typen) schreiben und dann "dapper" (http://code.google.com/p/dapper-dot-net/) verwenden:

var data = connection.Query<Request>(
    "select * from Requests where Complete = 0").ToList();

Mit so etwas wie:

public class Request {
    public string Username{get;set;}
    ...
    public bool Complete {get;set;}
}

Dapper ist kostenlos, einfach, hat eine Parametrisierung, um SQL-Injection zu vermeiden, und ist sehr schnell.

6
Marc Gravell

Ich würde ein Objekt mit Eigenschaften erstellen, die diese Werte enthalten, und es dann nach Bedarf weitergeben.

public class YourObjectName
{
   public string Username { get; set; }
   public string Item { get; set; }
   public string Amount { get; set; }
   public string Complete { get; set; }
}

YourObjectName a = new YourObjectName();
a.Username = Reader['Username'].ToString();
0
Dietpixel

ich weiß, dass es etwas spät ist, aber Sie können lokale Zeichenfolgenvariablen verwenden, oder ein Zeichenfolgenarray oder eine Liste, in der die Daten in die Datenbank eingefügt werden, und diese in der Schreibzeile Ihrer Konsole aufrufen

0
Albert Laure