繁体   English   中英

C#从SQL获取所有名称并作为列表返回

[英]C# Get all names from SQL and return as a list

我试图更加熟悉SQL和C#,所以我正在开发一个简单的应用程序,现在我有一个已填充的SQL数据库,但是我想从Persons Table中获取我的所有姓名并将它们放在组合中框,但是当我尝试获取所有名称时,我只能获得表中的名字。 这就是我试图做到的。

using (SqlCommand sqlCommand = new SqlCommand("SELECT [Name] FROM [Persons].[dbo].[Test]", sqlConnection))
{
    var names = sqlCommand.ExecuteScalar();
}

您实际上想像这样使用SqlDataReader

var names = new List<string>();
using (SqlCommand sqlCommand = new SqlCommand("SELECT [Name] FROM [Persons].[dbo].[Test]", sqlConnection))
{
    using(var reader = sqlCommand.ExecuteReader())
    {
       while(reader.Read())
       {
          names.Add(reader["Name"].ToString());
       }
    }
}

请注意, ExecuteScalar仅获取返回的第一行的第一列。

而不是ExecuteScalar,请执行以下操作:

using( var rdr = command.ExecuteReader() )
{
    while( rdr.Read() )
    {
          var name = rdr.GetString(0);
    }
}

改用ExecuteReader; 请确保在循环之外声明列表,否则将在需要时超出范围。

var names = new List<string>();
using (SqlCommand sqlCommand = new SqlCommand("SELECT [Name] FROM [Persons].[dbo].[Test]", sqlConnection))
{
    var reader = command.ExecuteReader();
    while (reader.Read())
    {
        names.Add(reader[0]);
    }
}

sqlCommand.ExecuteScalar()返回单个值,这是标量一词的含义。 您需要声明一个SqlDataReader rdr; 并通过rdr = sqlCommand.ExecuteReader()对其进行初始化。 然后,您需要使用while循环遍历所有行,以检查阅读器是否有更多行可以通过while(rdr.Read())进行读取。 这将通过返回值(a)通过返回值告诉您是否还有剩余的未读行(因此它是您的while条件),并且b)使读取器前进至第一条未读行。

我强烈推荐以下文章,以帮助您快速使用C#中的SqlCommand: http : //www.dotnetperls.com/sqlcommand

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM