日期:2014-05-17  浏览次数:20878 次

要往从excel里面导入日期类型的数据到SQL server的日期列里面,该怎么写?
我用的是C#语言,程序是这样的
string ass_indate = string.Empty;
ass_indate = ds.Tables[0].Rows[i][j].ToString().Trim(); 
excelsql = string.Format("insert into assets (ass_indate) values ('{0})", ass_indate);
总是报这个错误:
在 System.Data.SqlClient.SqlException 中第一次偶然出现的“System.Data.dll”类型的异常

------解决方案--------------------
调试看看ass_indate是什么值
------解决方案--------------------
 你上面的 ass_indate是string型,  但是向数据库中插入的时候,你看数据库的对应的是什么类型
------解决方案--------------------
   你数据库字段类型是  date   ,excel 字段类型是string    类型不对应     得转化下
------解决方案--------------------
类型无关,只要ass_indate是合法的时间格式即可,估计是ass_indate的格式不合法
------解决方案--------------------
简单的  改法是 把你的数据库字段 改为   vchar  类型
------解决方案--------------------
两个可能的原因:
1、{0}右邊少一個單引號。
2、EXCEL中是空值,因為insert語句中,日期不可以插入空字符串,這個需要在代碼中進行判斷,如果EXCEL中不是空值,就insert這個值,否則就insert一個null。
------解决方案--------------------
日期怎么可能不能插入空值?
存储过程都没问题...
DateTime? date = null;
if(!string.IsNullOrEmpty(ds.Tables[0].Rows[i][j].ToString().Trim()))
{
  date = Datetime.Parse(ds.Tables[0].Rows[i][j].ToString().Trim());
  excelsql = string.Format("insert into assets (ass_indate) values ('{0})", date);
}
else
{
  excelsql = string.Format("insert into assets (ass_indate) values ('{0})", date);
}