je viens de commencer à apprendre le C # et je peux écrire des données dans la base de données sans problème. Mais j'ai des problèmes de lecture, le code SQL s'exécute correctement, mais le stockage me pose problème. Comment pourrais-je stocker les quatre colonnes qui devraient être retournées et ensuite les montrer comme une boîte de message? Merci.
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());
Un problème est absent des accolades après le temps
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
si vous ignorez les accolades, seule la première ligne sera traitée dans chaque boucle, le reste sera traité après la boucle, puis myReader
sera passé la dernière ligne.
N'oubliez pas d'utiliser le bloc using(){}
:
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());
}
}
}
Personnellement, j'écrirais une classe avec 4 propriétés (avec les noms et types correspondants), puis utiliserais "dapper" (http://code.google.com/p/dapper-dot-net/):
var data = connection.Query<Request>(
"select * from Requests where Complete = 0").ToList();
Avec quelque chose comme:
public class Request {
public string Username{get;set;}
...
public bool Complete {get;set;}
}
Dapper est gratuit, simple, paramétré pour éviter les injections SQL et très rapide.
Je créerais un objet avec des propriétés qui contiennent ces valeurs, puis le ferais si nécessaire.
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();
je sais que c'est un peu tard, mais vous pouvez utiliser des variables de chaîne locales, ou un tableau de chaînes ou une liste, insérez les données dans la base de données puis appelez-les dans la ligne d'écriture de votre console.