CSharp转换System.Datetime为MySqlDatetime类型

用CSharp编写过基于MySql数据库的应用程序时,可能会有需要向DataTable.DataRow对象赋值。我就在一个实际项目中遇到了必须使用DataTable对象作为DataGrid的数据源的情况。我向一个MySqlDateTime列写入数据,刚开始使用了如下的代码:

DataRow _dr = _dtData.NewRow();

_dr["DateTime"] = System.DateTime.Now;

_dtData.Rows.Add(_dr);

我的设想,是将当前系统时间写入到表的DateTime列。列的数据类型是datetime,数据库是MySql。但是在程序运行的时候,出现了异常。大概内容是“无法将System.Datetime转换成MySqlDateTime”。

经过网上一阵狂搜,也没找到可用的解决方案。因此打算自己尝试解决。

经过参考网上的资料,发现MySql的datetime和CSharp的datetime有一些不同,要实现利用CSharp给MySql的datetime类型对象的表写入数据,一般是使用Sql语句参数的形式,但是这个在我的应用环境中无法实现,因为我不是要把数据写入到数据库里面,只是为了在DataGrid上实现数据临时显示。因此只能从另外的方式入手。通过获取Mysqldatetime列的DataType,发现他的DataType是MySql.Data.Types.MySqlDateTime,而不是System.DateTime。因此只需要实现用System.DateTime生成一个MySql.Data.Types.MySqlDateTime的对象,就可以和列的数据类型相匹配。

经过修改后的代码为:

DataRow _dr = _dtData.NewRow();

_dr["DateTime"] = new MySql.Data.Types.MySqlDateTime(System.DateTime.Now);

_dtData.Rows.Add(_dr);

再次运行程序,工作正常,问题解决。


你可能感兴趣的:(MySql,CSharp)