以下代码引发异常datatype mistmach in criteria expression
。异常来自何处?生成的查询可以在microsoft access
中正常工作。
foreach (DataColumn column in dt.Columns)
{
if (column.DataType == typeof(String))
{
if (column.ColumnName != "ID1" && column.ColumnName != "ID" && column.ColumnName != "Geometry" && column.ColumnName != "Geometry_SK")
{
string query = "UPDATE " + tb_tablename.Text.Trim() + " SET " + column.ColumnName + " = Replace([" + column.ColumnName + "],Chr(10),\"\");";
using (OleDbCommand cmd = new OleDbCommand(query,conn))
{
cmd.ExecuteNonQuery();
}
}
}
}
例如,生成的SQL代码是UPDATE Necropolis SET NAME_MR = Replace([NAME_MR],"");
。使用cmd.ExecuteNonQuery()生成其执行后;
参数版本显示Syntax error in query. Incomplete query clause.
。
using (OleDbCommand cmd = new OleDbCommand(query,conn))
{
cmd.CommandType = CommandType.Text;
cmd.CommandText = "UPDATE @target SET [@columnname] = Replace([@columnname],'');";
cmd.Parameters.Add(new OleDbParameter("@target",OleDbType.VarChar)).Value = tb_tablename.Text.Trim();
cmd.Parameters.Add(new OleDbParameter("@columnname",OleDbType.VarChar)).Value = column.ColumnName;
MessageBox.Show(cmd.CommandText);
cmd.ExecuteNonQuery();
}