Используется код для выборки всех колонок в таблице и дальнейшее применение к каждой функционала update. При этом он на колонки типа integer как я понимаю выдаёт Data type mismatch in criteria expression . Как проверить тип данных до произведения запроса?
DataTable dt = new DataTable();
using (OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM " + tb_tablename.Text, conn))
{
adapter.Fill(dt);
}
foreach (DataColumn column in dt.Columns)
{
if (column.DataType == System.Type.GetType("System.String"))
{
if (column.ColumnName != "ID1" && column.ColumnName != "ID" && column.ColumnName != "Geometry" && column.ColumnName != "Geometry_SK")
using (OleDbCommand cmd = new OleDbCommand("UPDATE " + tb_tablename.Text + " SET " + column.ColumnName + " = Replace([" + column.ColumnName + "], Chr(10), \"\");", conn))
{
cmd.ExecuteNonQuery();
}
}
}
Проверка (column.DataType is string) не отрабатывает. При этом если сделать вывод типа - встречается Int32. Как проверить тип корректно?
Нашёл как проверить корректно if (column.DataType == typeof(String)) но ошибка осталась. С чем может быть связана данная ошибка?
System.Data.OleDb.OleDbException: "Data type mismatch in criteria expression."
Генерируемый запрос без проблем выполняется в самом Access.
Вынос запроса не помог.
string query = "UPDATE [" + tb_tablename.Text.Trim() + "] SET [" + column.ColumnName + "] = Replace([" + column.ColumnName + "], Chr(10), \"\");";
using (OleDbCommand cmd = new OleDbCommand(query, conn))
Сборка персонального компьютера от Artline: умный выбор для современных пользователей