将数据类型 varchar 转换为 numeric 时出错。
    for (int i = 0; i < dt.Rows.Count; i++)
         {
             string ResponseSQL = "";
             string ch = "'" + dt.Rows[i][0].ToString() + "'";
             string fzb = "'" + dt.Rows[i][1].ToString() + "'";
             string caf = "'" + dt.Rows[i][2].ToString() + "'";
             string mgf = "'" + dt.Rows[i][3].ToString() + "'";
             string rq = "'" + dt.Rows[i][4].ToString() + "'";
.........
string ResponseSQL1 = string.Format("insert into ex_qm_djzy(槽号,分子比,CaF2,MgF2,化验日期) values({0},{1},{2},{3},{4})", ch, isnull(fzb,0), isnull(caf,0), isnull(mgf,0), rq);//sql语句插入                 
                 SqlCommand cmd1 = new SqlCommand(ResponseSQL1, conn);
                 cmd1.CommandType = CommandType.Text;
                // Response.Write(ResponseSQL1);
                 cmd1.CommandText = ResponseSQL1;
                 r2 = cmd1.ExecuteNonQuery() + r2;
  从excel表中获取的值,分子比,CaF2,MgF2有可能有空值,运行程序插入数据库的时候出这个错误,分子比,CaF2,MgF2在数据库中是decimal类型的,怎么让空值插进去呢,把空值变为插进去也行,还有好办法吗
------解决方案--------------------
string fzb = dt.Rows[i][1].ToString();  
string caf = dt.Rows[i][2].ToString();  
string mgf =  dt.Rows[i][3].ToString() ;  
改三个就行了。试试吧。
numeric,decimal这些列是不用单引号的。
------解决方案--------------------两点: 1.从excel中取出来的数据如果为空是应该是 DBNull.Value,而不是null或"", 2. isnull() 判断的是null;