Я использую OleDB в C # /. Net и мне не нравится, как oledb делает параметры с вопросительными знаками:
using (OleDbConnection sqlConnect = drtevs.GetConnection())
{
OleDbCommand command.CommandText = "UPDATE NAME SET FIRST_NAME = ?, LAST_NAME = ? WHERE ID = ?;";
command.Parameters.Add(new OleDbParameter("@FIRST_NAME", txtFirst));
command.Parameters.Add(new OleDbParameter("@LAST_NAME", txtLast));
command.Parameters.Add(new OleDbParameter("@ID", 12));
command.ExecuteNonQuery();
}
Проблема, которую я вижу, заключается в том, что они не названы и поэтому не могут их повторно использовать. Есть ли лучший способ сделать параметры с OleDB? Если кто-то может дать мне код для выполнения кода, например LINQ-TO-SQL , следующим образом:
db.ExecuteQuery("UPDATE NAME SET FIRST_NAME = {0}, LAST_NAME = {1} WHERE ID = {2}", txtFirst, txtLast, 12);
Я знаю, что собственный поставщик SQL .net имеет именованные параметры (например, @FIRST_NAME, @LAST_NAME), но поскольку я работаю как с SQL Server, так и с Oracle, это не вариант.
EDIT:
Я хочу избежать SQL-инъекций и очистить мои параметры, а также иметь возможность вставлять несериализуемые объекты, такие как байтовые массивы.
Все ответы, данные до сих пор потерпели бы неудачу, если бы моя фамилия была "DROP TABLE NAME -", кроме того, это вызвало бы повреждение моей базы данных