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
超过最后一行.
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)
就个人而言,我会编写一个包含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注入,并且非常快.
归档时间: |
|
查看次数: |
89134 次 |
最近记录: |