The following code raises an exception datatype mistmach in criteria expression
. Where does the exception come from ? Generated query works in Microsoft Access
with no problems.
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();
}
}
}
}
As example generated SQL code is UPDATE Necropolis SET NAME_MR = Replace([NAME_MR], Chr(10), "");
. After generating its execute with cmd.ExecuteNonQuery();
Parameters version shows 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], Chr(10), '');";
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();
}