Можно ли обозначить переменную связывания в SQL Server, используя те же обозначения, что и Oracle i.e.: 0,: 1 вместо использования?.Параметры переменной привязки
Я искал, но не нашел ничего убедительного в этом вопросе. В настоящее время мое решение использует переменные связывания для представления значений операторам, которые я запускаю в базе данных, которая отлично работает в Oracle, но мне также нужно сделать то же самое в SQL Server и PostGIS, чтобы назвать несколько. Я не хочу, чтобы сказать, например:
switch(dialect)
{
case "Oracle":
{
oleDataBaseConnection.AddParameter(":1", coordsys);
break;
}
case "SQLServer":
{
oleDataBaseConnection.AddParameter("?", coordsys);
break;
}
}
* AddParameter() является функцией от моего класса-оболочки, которые добавляют значения в список будут добавлены к объекту команды при вызове функции выполнения я написал ,
Я хочу, чтобы мой код был максимально чистым и не содержал жестко закодированные материалы, как показано выше. Я хотел бы решение, которое подходит всем. (да, я знаю, это, вероятно, принятие желаемого за действительное!)
Я знаю, что я мог бы использовать замену строки для этого, но это не то, что я хочу. Я не хочу использовать обходное решение, подобное этому. Также мой менеджер проекта попросил, чтобы я попытался найти решение, используя переменные связывания.
Любые идеи?
Я думаю, что понимаю, что вы имеете в виду. Таким образом, в основном замена символа будет обрабатываться моим классом-оболочкой, когда я добавлю параметры в команду. Таким образом, я бы просто обнаружил диалект, необходимый мне, как сейчас, и поставлю правильный синтаксис: или:. Одна из проблем заключается в том, что одна из моих баз данных может вообще не поддерживать переменные связывания. Я предполагаю, что в этом случае мне придется выполнять замену строки в моем коде, но я должен был бы заранее знать, что он не поддерживает переменную связывания. На самом деле это довольно сложная задача. – CSharpened
@CSharpened точно. Однако в этот момент я ожидал бы, что все достойные драйверы базы данных будут поддерживать переменные связывания каким-то образом, потому что это так важно для предотвращения атак SQL-инъекций. – btilly
Хорошо спасибо за информацию. Я увижу, смогу ли я реализовать свое предложение успешно. Мне кажется, что мне нужно, и я думал, но я надеялся, что может быть немного более элегантное решение. Благодарю. – CSharpened