在C#中从SQL数据库读取值

我刚刚开始学习C#,我可以毫无问题地将数据写入数据库。 但是我在阅读方面遇到了问题,SQL执行得很好,但我遇到了存储问题。 我如何存储应返回的四列,然后将它们显示为消息框? 谢谢。

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()); 

一个问题是在一段时间后缺少牙箍

 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 

如果你跳过大括号只会在每个循环中处理第一行,其余的将在循环后处理,然后myReader超过最后一行。

不要忘记使用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()); } } } 

就个人而言,我会编写一个包含4个属性(具有匹配的名称和类型)的类,然后使用“dapper”(http://code.google.com/p/dapper-dot-net/):

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

有类似的东西:

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

Dapper是免费的,简单的,具有参数化以避免SQL注入,并且非常快。

我将创建一个具有保存这些值的属性的对象,然后根据需要传递该对象。

 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(); 

我知道它有点晚但你可以使用本地字符串变量,或字符串数​​组或列表插入数据库中的数据然后在你的控制台写行中调用它