如何从SQL Server数据库中获取值并填充到列表中?

4
    这个列表的大小会根据我数据库中有多少项而增加或减少。
    我需要填充列表而不是列表框。我知道我需要打开一个连接。
using (var conn = new SqlConnection(Properties.Settings.Default.DBConnectionString))
{
    using (var cmd = conn.CreateCommand())
    {
        conn.Open(); 

        List<string> TagList = new List<string>();
        for (int i = 0; i < TagList.Count; i++)
            TagList[i].Add("Data from database");

        cmd.ExecuteNonQuery();
    }
}

我真的不确定该怎么做,而且我确定我上面的方法看起来非常错误,所以我真的需要帮助。

能有人告诉我我做错了什么吗?

3个回答

8
我想分享我的解决方案,希望能够帮助未来的某个人:
public List<string> getFromDataBase() 
{
    List<string> result = new List<string>();
    using(SqlConnection con = new SqlConnection("connectionString"))
    {
        con.Open();
        DataTable tap = new DataTable();
        new SqlDataAdapter(query, con).Fill(tap);
        result = tap.Rows.OfType<DataRow>().Select(dr => dr.Field<string>("columnName")).ToList();
    }
    return result;
}

这是一个优雅的解决方案。谢谢。 - Rotondof
这个解决方案很简单易懂,而且有效。谢谢。 - Kostandin Vllahu

8
public IEnumerable<string> GetTagList()
{
    using (var connection = new SqlConnection(Properties.Settings.Default.DBConnectionString))
    using (var cmd = connection.CreateCommand())
    {
        connection.Open();
        cmd.CommandText = "select Tag from TagsTable"; // update select command accordingly
        using (var reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                yield return reader.GetString(reader.GetOrdinal("Tag"));
            }
        }
    }
}

那么您可以按如下方式调用它。
List<string> tags = GetTagList().ToList();

哦,很好看,但“select Tag from TagsTable”是什么意思?像存储过程调用还是仅仅是一个Select语句?那如果我说选择TagID(一个列)从TblTags中呢?这就是它的意思吗? - Pomster
@Pomster 是的,这是一个选择语句。 - Damith

4
这样就可以了(如果我没有打错任何字...)
private void LoadList()
    {
        List<string> tagsList = new List<string>();

        using (IDbConnection connection = new SqlConnection(Properties.Settings.Default.DBConnectionString))
        {
            connection.Open();    

            using (IDbCommand command = connection.CreateCommand())
            {
                command.CommandText = "SELECT TAGCOLUMN FROM TAGSTABLE";

                using (IDataReader reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        if (!reader.IsDBNull(0))
                            tagsList.Add(reader.GetString(0));
                    }

                    reader.Close();
                }
            }

            connection.Close();
        }
    }

编辑:

当然,您需要将选择语句更改为来自数据库的正确语句。我只是使用伪代码来向您展示应该放置哪些内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接