データセットに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;
}