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

Pau*_*aul 24 .net c# t-sql sql-server 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());
Run Code Online (Sandbox Code Playgroud)

Alb*_*nbo 29

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

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
Run Code Online (Sandbox Code Playgroud)

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

  • @Paul如果这回答了你的问题,似乎就是这种情况,请务必将答案标记为答案.这是答案帖子的复选标记符号. (7认同)

aba*_*hev 21

别忘了使用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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 6

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

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

有类似的东西:

public class Request {
    public string Username{get;set;}
    ...
    public bool Complete {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

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