我用的是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”类型的异常

解决方案 »

  1.   

     你上面的 ass_indate是string型,  但是向数据库中插入的时候,你看数据库的对应的是什么类型
      

  2.   

       你数据库字段类型是  date   ,excel 字段类型是string    类型不对应     得转化下
      

  3.   

    数据库是datetime,我该怎么做呢?
      

  4.   

    应该是string类型的吧,我都tostring过了,但是数据库对应的列是datetime类型,我该怎么做呢?
      

  5.   

    类型无关,只要ass_indate是合法的时间格式即可,估计是ass_indate的格式不合法
      

  6.   

    这样啊,真的与类型无关吗?我excel表里面的格式是yyyy/mm/dd,数据库里面的是yyyy/mm/dd **:**:**
    但是我把excel里面的格式该yyyy/mm/dd **:**:**这种也不行,哪种才是合法的呢?
      

  7.   

    简单的  改法是 把你的数据库字段 改为   vchar  类型
      

  8.   

    两个可能的原因:
    1、{0}右邊少一個單引號。
    2、EXCEL中是空值,因為insert語句中,日期不可以插入空字符串,這個需要在代碼中進行判斷,如果EXCEL中不是空值,就insert這個值,否則就insert一個null。
      

  9.   

    日期怎么可能不能插入空值?
    存储过程都没问题...
    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);
    }