Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过C从MySql检索时,指定的强制转换无效_C#_Mysql_Datetime - Fatal编程技术网

C# 通过C从MySql检索时,指定的强制转换无效

C# 通过C从MySql检索时,指定的强制转换无效,c#,mysql,datetime,C#,Mysql,Datetime,我试图用MySql数据库中的记录填充一个数据集,然后遍历数据集中表的每条记录,创建并填充一个自定义数据对象(每次遍历循环),最后重新调整创建的数据对象列表 我遇到的问题是,我在尝试创建每个数据对象时出错: 错误: System.InvalidCastException:指定的强制转换无效 错误突出显示了这一行代码:var newslease=new newslease 我怀疑两个问题之一: 1由于MySql日期时间数据类型与C日期时间数据类型的格式问题,无法创建对象/ 2 select查询实际上

我试图用MySql数据库中的记录填充一个数据集,然后遍历数据集中表的每条记录,创建并填充一个自定义数据对象(每次遍历循环),最后重新调整创建的数据对象列表

我遇到的问题是,我在尝试创建每个数据对象时出错:

错误:

System.InvalidCastException:指定的强制转换无效

错误突出显示了这一行代码:var newslease=new newslease

我怀疑两个问题之一: 1由于MySql日期时间数据类型与C日期时间数据类型的格式问题,无法创建对象/ 2 select查询实际上没有返回任何内容,因此没有任何内容可填充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;
        }

这只是从基中检索到的行中的一行没有您期望的类型

要识别问题并一致解决问题,请逐行初始化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连接器库的一部分->>