c# - 从数据库填充列表 - System.InvalidCastException

标签 c# sql-server

我有一个简单的类,我想从数据库中填充列表:

class Foreman
{
    public int ForeBadge { get; set; }
    public string ForeName { get; set; }
}

这是我的方法,应该返回 Foreman 对象的列表:

    static public List<Foreman> getForeman()
    {
        connectionString.DataSource = "server";
        connectionString.InitialCatalog = "db";
        connectionString.UserID = "tunnelld";
        connectionString.Password = "pw";

        string queryString = "SELECT * FROM [QTRAXAdmin].[vwQT_Foreman]";

        List<Foreman> list;
        // Creates a SQL connection
        using (var connection = new SqlConnection(connectionString.ToString()))
        {
            using (var command = new SqlCommand(queryString, connection))
            {
                connection.Open();
                using (var reader = command.ExecuteReader())
                {
                    list = new List<Foreman>();
                    while (reader.Read())
                        list.Add(new Foreman { ForeBadge = reader.GetInt32(0), ForeName = reader.GetString(1) });
                }
            }
            connection.Close();
            return list;
        }

该方法在 list.Add(new Foreman { ForeBadge = reader.GetInt32(0), ForeName = reader.GetString(1) });

处出错

其中:System.Data.dll 中发生类型为“System.InvalidCastException”的未处理异常

对我来说,我似乎使用了正确的变量类型。我做错了什么?

最佳答案

尝试在查询中显式使用字段名称,以确保列按照您认为的顺序返回。这是我看到的最可疑的事情。或者,您可以在 using block 中使用列名称。当然,还要仔细检查数据库中的列定义。

关于c# - 从数据库填充列表 - System.InvalidCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334436/

相关文章:

c# - 如何在 Media.AfterSave 事件处理程序中获取当前的 Umbraco 用户?

c# - 如何释放被另一个进程锁定的剪贴板?

sql-server - 从 Docker for Windows 中运行的 ASP.NET Core 应用程序连接到 SQL Server Developer

c# - 为什么 Request.ServerVariables ["HTTP_HOST"] 与 Request.Url.Host 不同?

c# - 为什么 File.OpenRead() 将相对路径附加到可执行文件?

SQL MAX 命令仍然返回多个结果

c# - 在 c# 代码中使用 dapper 将输出参数传递给存储过程

sql - 在事务中使用显式提交

sql - 大表上的简单 UPDATE 查询性能较差

c# - Newtonsoft.Json 在长树中的用法