C# 通过C从MySql检索时,指定的强制转换无效
我试图用MySql数据库中的记录填充一个数据集,然后遍历数据集中表的每条记录,创建并填充一个自定义数据对象(每次遍历循环),最后重新调整创建的数据对象列表 我遇到的问题是,我在尝试创建每个数据对象时出错: 错误: System.InvalidCastException:指定的强制转换无效 错误突出显示了这一行代码:var newslease=new newslease 我怀疑两个问题之一: 1由于MySql日期时间数据类型与C日期时间数据类型的格式问题,无法创建对象/ 2 select查询实际上没有返回任何内容,因此没有任何内容可填充NewsRelease对象 我试过测试这两个问题,但似乎无法确定这两个问题是否真的存在。任何关于我的问题是什么以及如何解决它的见解都是非常感谢的C# 通过C从MySql检索时,指定的强制转换无效,c#,mysql,datetime,C#,Mysql,Datetime,我试图用MySql数据库中的记录填充一个数据集,然后遍历数据集中表的每条记录,创建并填充一个自定义数据对象(每次遍历循环),最后重新调整创建的数据对象列表 我遇到的问题是,我在尝试创建每个数据对象时出错: 错误: System.InvalidCastException:指定的强制转换无效 错误突出显示了这一行代码:var newslease=new newslease 我怀疑两个问题之一: 1由于MySql日期时间数据类型与C日期时间数据类型的格式问题,无法创建对象/ 2 select查询实际上
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;
}
这只是从基中检索到的行中的一行没有您期望的类型 要识别问题并一致解决问题,请逐行初始化newRelease,这样运行时将命中问题发生的确切行
var newsRelease = new NewsRelease();
newsRelease.NewsReleaseId = (int)row["NewsReleaseId"];
newsRelease. Title = (string)row["Title"];
....
....
一旦发现并解决了一个问题,如果愿意,您可以回到以前的初始化方式。逐步创建新版本以查找哪个属性存在数据类型错误。您应该尝试用Convert.ToDateTime…(转换为Convert.ToInt32…)替换DateTime转换,与int转换相同,正如你所建议的那样,这很有帮助。我的第一个问题是将MySql类型的BIT转换为.NETBOOL。首先将MySql位转换为.NET UInt64,然后转换为bool,修复了此问题。现在在将MySql日期时间类型转换为c日期时间方面存在问题。很难找到简单的解决方案,有什么想法吗?这很有效:Convert.ToDateTimeMySqlDateTimerow[DatePublished],需要使用MySql.Data.Types;,.net的mysql连接器库的一部分->>