C#读取 MySql 时,明明存在数据但却查不出来
String sqlConn = "server=localhost;port=3306;user=root;password=123456;Database=db;charset=utf8;Convert Zero Datetime=True;";
//添加convert zero datetime=True到连接字符串将自动将0000-00-00Date值转换为DateTime.MinValue()
MySqlConnection conn = new MySqlConnection(sqlConn);
MySqlDataAdapter adap = new MySqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
try
{
adap.Fill(ds);
}
catch { }
如果存在字段类型为date/ datetime 时的可能会出现以下问题
“Unable to convert MySQL date/time value to System.DateTime”
原因:可能是该字段(date/datetime)的值默认缺省值为:0000-00-00/0000-00-00 00:00:00,这样的数据读出来转换成System.DateTime时就会有问题;
注意:因为转换不成功就会过滤掉异常数据,造成查询结果不全。
解决办法:
1、将该字段的缺省值设置为null,而不是0000-00-00/0000-00-00 00:00:00的情况;
2、在链接MySQL的字符串中添加:Convert Zero Datetime=True 和 Allow Zero Datetime=True两个属性;
3、将该字段设置成字符串类型;