Мне нужно отправить команду в базу данных. Я знаю имена и типы данных всех полей в затронутой таблице, и мне нужно сгенерировать команду, используя их. Моя единственная проблема заключается в определении значений столбцов типов данных, которым требуются кавычки в TSQL - например, если поле было строкой Hello World
типа varchar
, мне нужно было бы ее процитировать, но если бы это было int
, 5, я не нужно было бы цитировать его.Определить, какие типы данных SQL требуют значения для цитирования?
Я мог бы использовать что-то вроде следующего кода, но он кажется очень неэффективным. Может ли кто-нибудь указать мне на лучший способ сделать это - возможно, используя встроенный SQL-сервер или функцию C#?
public string QuoteStringIfDatatypeRequires(string columnName)
{
if (DataTypes[columnName].Contains("date") || DataTypes[columnName].Contains("time") ||
DataTypes[columnName].Contains("char") || DataTypes[columnName].Contains("text") ||
DataTypes[columnName].Contains("binary") || DataTypes[columnName].Contains("image"))
{
return "'" + columnName + "'";
}
return columnName;
}
Это просто случайная инъекция SQL, которая должна произойти. Вы думали об использовании ** [параметризованных запросов] (http://blogs.msdn.com/b/sqlphp/archive/2008/09/30/how-and-why-to-use-parameterized-queries.aspx) ** вместо? –
Что представляет 'columnName'? Значение, которое вы хотите вставить в свои таблицы или имя столбца? На самом деле я не понимаю, что вы пытаетесь сделать. – Steve
Я просмотрел параметризованные запросы, и это сработает. Я не знаком с C#, поэтому я действительно не знал, о чем просил. Я приму этот ответ, когда закончится таймер. –