[英]C# data type mismatch in criteria expression
The following code raises an exception datatype mistmach in criteria expression
.以下代码
datatype mistmach in criteria expression
。 Where does the exception come from?异常从何而来? Generated query works in
Microsoft Access
with no problems.生成的查询在
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();
}
}
}
}
As example generated SQL code is UPDATE Necropolis SET NAME_MR = Replace([NAME_MR], Chr(10), "");
例如生成的 SQL 代码是
UPDATE Necropolis SET NAME_MR = Replace([NAME_MR], Chr(10), "");
. . After generating its execute with cmd.ExecuteNonQuery();
使用 cmd.ExecuteNonQuery() 生成其执行后;
Parameters version shows Syntax error in query. Incomplete query clause.
参数版本
Syntax error in query. Incomplete query clause.
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();
}
are you sure, that query
gives a valid SQL statement?您确定,该
query
给出了有效的 SQL 语句吗? I am not sure, but =Replace([xyz], Chr(10), \"\");
我不确定,但是
=Replace([xyz], Chr(10), \"\");
does not look like a valid SQL statement fo me... I think, you should use two seperate strings for the columname:看起来不像是一个有效的 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 + ";";
Can you give us an example of the update string?你能给我们一个更新字符串的例子吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.