簡體   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