将数据类型 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;