繁体   English   中英

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

[英]Populating list from Database - System.InvalidCastException

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

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块中使用列名。 当然还要仔细检查数据库中的列定义。

假设表的列名称是forebadge和forename,请替换:

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

有:

string queryString = "SELECT FOREBADGE, FORENAME FROM [QTRAXAdmin].[vwQT_Foreman]";

暂无
暂无

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

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