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

时间:2011-05-14 17:14:34

标签: c# .net sql-server tsql ado.net

我刚刚开始学习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());

5 个答案:

答案 0 :(得分:29)

一个问题是在while之后缺少大括号

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超过最后一行。

答案 1 :(得分:20)

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

答案 2 :(得分:6)

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

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

有类似的东西:

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

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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