标准表达式中的C#数据类型不匹配

以下代码引发异常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();
                            }
wx0806 回答:标准表达式中的C#数据类型不匹配

您确定query给出了有效的SQL语句吗? 我不确定,但是=Replace([xyz],Chr(10),\"\");看起来不像是有效的SQL语句。 我认为,您应该为列名使用两个单独的字符串:

string col_org = column.ColumnName;
string col_new = column.ColumnName.Replace(Chr(10),"\"");
string query = "UPDATE " + tb_tablename.Text.Trim() + " SET " + col_org + " = " + "+ col_new + ";";

您能举一个更新字符串的例子吗?

本文链接:https://www.f2er.com/3096074.html

大家都在问