C#.NET给DataTable日期类型的列赋值报错:所需类型是 MySqlDateTime,值类型与列类型不匹配

  C#.NET给DataTable日期类型的列赋值报错:所需类型是 MySqlDateTime,值类型与列类型不匹配

C#.NET给DataTable日期类型的列赋值报错:所需类型是 MySqlDateTime,值类型与列类型不匹配



C#.NET 给DataTable日期类型的Column赋值报错:


System.ArgumentException
  Message=值类型与列类型不匹配不能在 CreateTime 列中存储 <2021-06-11 18:02:50>。所需类型是 MySqlDateTime。
  Source=System.Data
内部异常 1:
ArgumentException: 值类型与列类型不匹配



贴图图片-连接mysql报错1



相关错误:



贴图图片-连接mysql报错(1)




解决方案:


1. 检查表结构的日期时间类型,默认值。

[不是null] 若是打勾的,必须把默认设置为“CURRENT_TIMESTAMP”。
[不是null] 不打勾的,必须把默认设置为空值,或者是NULL。


!!!!  绝对不允许'0000-00-00 00:00:00'值,否则.NET无法解析。



贴图图片-MySQL日期



另外注意:

1. 若是datetime类型的字段,不要勾选【根据时间戳更新】,否则,您修改任一字段的值,此字段的值会同步更新为当前时间。


2. TimeStamp类型的字段,必须勾选【根据时间戳更新】,默认值为:CURRENT_TIMESTAMP。




可以用下面的语句查询默认值为'0000-00-00 00:00:00'的表


SQL Code:

SELECT * FROM information_schema.`COLUMNS` where 1=1
and TABLE_SCHEMA in ('cs5_normal','cs5_system')
and column_default='0000-00-00 00:00:00'
and column_type in ('datetime')
order by table_name

//来源:C/S框架网 | www.csframework.com | QQ:23404761





2. MySQL的连接字符串加上以下属性:

Convert Zero Datetime=True;


删除此属性!!! --> Allow Zero Datetime=True;




C# Code:

//解决方案:
//连接字符串删除:Allow Zero Datetime=True; 加上:Convert Zero Datetime=True;
string conn = "Server={0};Port={1};Database={2};User ID={3};Password={4};Connection TimeOut={5};Charset=utf8;Pooling=true;Min Pool Size=0;Max Pool Size=500;Connection Lifetime=0;Convert Zero Datetime=True;";
conn
= string.Format(conn, "120.79.85.97", "3306", "cs5_system", "root", "lucky2021.", 30);
IDatabase db
= DatabaseFactory.CreateMySqlDatabase(conn);

var DT = db.GetTable("SELECT * FROM tb_MyUserRoles LIMIT 10;");
var row = DT.Rows.Add();
row[
"CreateTime"] = DateTime.Now;
DT.AcceptChanges();

MessageBox.Show(row[
"CreateTime"].ToString());


//来源:C/S框架网 | www.csframework.com | QQ:23404761






C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务




版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
发表评论

评论内容
昵称:
关联文章

C#.NETDataTable日期类型赋值类型 MySqlDateTime类型类型匹配
C#.NET 查询MYSQL类型类型匹配不能在中存储<0001-01-01 00:00:00>。类型MySqlDateTime
代码生成器生成ORM:不能在 colLength 中存储 <18,2>。类型 Int32。
EditValueChanged事件,另外文本框赋值,为什么事件本身
DevExpress DateEdit组件日期,传入SQL参数解决方法
升级程序DataTable.ReadXml:MySql.Data.Types.MySqlDateTime is not allowed here
SetPropertyValue 对象属性赋值
C#.Net类型和引用类型区别
通过.NET反射动态调用SetValue方法属性PropertyInfo赋值
C# DataGridView 自动新增记录当前单元格赋值
LookupEdit.EditValueChanged事件内其它文本框赋值无效或变回原来
C/S开发框架DAL层提交数据"外键为空!"解决方案。
C# DataSet和DataTable
ASP.NET编译网站:未能加载类型.Global.asax,把CodeBehind改为CodeFile即可
(C# 更新Web引用) 此计算机上没有安装枚举Web引用组件
到具有绑定 MetadataExchangeHttpBinding 终结点方案 http 匹配基址。注册基址方案 [https]
C# 绑定数据源文本框.Text属性赋值,但没有保存数据
运行升级程序:系统找到指定文件。
在文本框输入,离开焦点保存还原来
C# ADO.NET根据实体对象类型转换创建DataTable对象