0

データセットにMySqlデータベースのレコードを入力しようとしています。次に、データセット内のテーブルの各レコードをループし、ループを通過するたびにカスタムデータオブジェクトを作成して入力し、最後に作成されたデータオブジェクトのリストを返します.

私が抱えている問題は、各データオブジェクトを作成しようとするとエラーが発生することです:

エラー:

System.InvalidCastException: 指定されたキャストは無効です。

エラーは、次のコード行を強調表示します。var newsRelease = new NewsRelease

私は 2 つの問題のいずれかを疑っています: 1) MySql の DateTime データ型と C# の DateTime データ型のフォーマットの問題が原因でオブジェクトを作成できない/ 2) 選択クエリは実際には何も返さないため、NewsRelease オブジェクトに入力するものは何もありませんと。

両方の問題をテストしてみましたが、どちらかが実際に問題であるかどうかを判断できないようです。私の問題とそれを修正する方法についての洞察は大歓迎です。

public List<NewsRelease> SELECT()
        {
            MySqlConnection connection = new MySqlConnection(ConnectionString);
            MySqlCommand cmd = connection.CreateCommand();
            cmd.CommandText = "SELECT * FROM NewsReleases";
            MySqlDataAdapter adap = new MySqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            adap.Fill(ds);

            List<NewsRelease> NewsReleases = new List<NewsRelease>();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                var newsRelease = new NewsRelease
                {
                    NewsReleaseId = (int)row["NewsReleaseId"],                   
                    Title = (string)row["Title"],
                    Content = (string)row["Content"],
                    Images = Convert.ToBoolean((int)row["Images"]),
                    MediaAdvisory = Convert.ToBoolean((int)row["MediaAdvisory"]),
                    PublicAdvisory = Convert.ToBoolean((int)row["PublicAdvisory"]),                    
                    Time = (DateTime)row["Time"],
                    DatePublished = (DateTime)row["DatePublished"],
                    DateCreated = (DateTime)row["DateCreated"],
                    DateModified = (DateTime)row["DateModified"],
                    ModifiedBy = (string)row["ModifiedBy"],
                    HasFrenchVersion = Convert.ToBoolean((int)row["HasFrenchVersion"])
                };

                NewsReleases.Add(newsRelease);
            }

            return NewsReleases;
        }
4

1 に答える 1