如何在Visiual Studio 2013网站项目中显示mutlitple行

时间:2015-07-28 10:09:10

标签: c# visual-studio-2013

我使用的是C#语言和Visual Studio 2013.我试图在我的网站上显示多行,但它只显示第一个结果

我正在尝试

String show = "Select Posts from userPosts where Username='John'";
SqlCommand com = new SqlCommand(show, con);
String str = com.ExecuteScalar().ToString();
Response.Write(str);

这仅显示用户名JOHN的第一个结果,但我想要全部。

3 个答案:

答案 0 :(得分:1)

这是因为您使用了ExecuteScalar()尝试这样(结果显示在DataGridView中):

String show = "Select Posts from userPosts where Username='John'";
SqlConnection con = new SqlConnection(connStr);
SqlDataAdapter da = new SqlDataAdapter(show,con);
DataSet ds = new DataSet();
da.Fill(ds,"tbl");
dataGridView1.DataSource = ds.Tables[0];

如果您不想在DataGridView中展示并只是存储在变量中,请使用List<string>,如下所示:

List<string> Posts = new List<string>();
foreach (DataRow item in ds.Tables[0].Rows)
{
    Posts.Add(item[0].ToString());
}

您也可以使用SqlDataReader作为另一种选择。

答案 1 :(得分:0)

您正在使用ExecuteScalar [执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。 ]

尝试ExecuteReader

String show = "Select Posts from userPosts where Username='John';
using (SqlCommand command = new SqlCommand(show, connection))
    {
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
        for (int i = 0; i < reader.FieldCount; i++)
        {
            Console.WriteLine(reader.GetValue(i));
        }
        Console.WriteLine();
        }
    }
    }

顺便说一下你可以试试像Dapper https://github.com/StackExchange/dapper-dot-net这样的轻型ORM。它真的很好地删除了这些可怕的while循环

答案 2 :(得分:0)

ExecuteScalar() - 它执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx

而不是ExecuteScalar使用ExecuteReader