У меня есть ряд объектов, каждый из которых имеет свои вспомогательные функции для подготовки их к вставке SQL. При первоначальном кодировании это выполнялось с помощью обычных операций со строками для генерации текста команды SQL. Затем строка будет передана в общий модуль SQL Execute, который осуществляет связь с базой данных. Сейчас я конвертирую эти методы, чтобы использовать параметры для лучшей практики трудоустройства. Мой запрос выбора, метод выглядит следующим образом:
public static DataTable ExecuteSelectSQLQuery(string SQLString,
List<SqlParameter> myParameters)
{
string fullSQLString = "";
fullSQLString = "USE " + dbName + "\n" + SQLString;
string myConnString = ConnectionStringHelper.GetConnectionString();
Console.WriteLine("Connecting to SQL Server for Parameterized Query...");
SqlConnection connection = new SqlConnection(myConnString);
SqlDataAdapter myAdapter = new SqlDataAdapter(SQLString, connection);
foreach (SqlParameter para in myParameters)
myAdapter.SelectCommand.Parameters.Add(para);
DataSet mySet = new DataSet();
myAdapter.Fill(mySet, "myTable");
DataTable dt = mySet.Tables["myTable"];
Console.WriteLine("Connection Closed. Operation Complete.");
return dt;
}
Я сейчас пытаюсь параметризовать запрос вставки таким же образом. Иногда я хочу загружать несколько сотен записей за раз, поэтому мой первоначальный метод просто построил SQL соответственно. Когда я пытаюсь параметризовать запрос, кажется, что предпочтительным методом массовой обработки является запуск цикла внутри соединения, как показано здесь . Я хочу, чтобы моя функция execute была независимой от объекта;Я счастлив представить строки и параметры, но я не хочу зацикливаться на своем источнике данных в методе SQL Execute.
Если не вызывать новую функцию одиночной вставки для каждой строки данных, есть ли лучший способ эффективной передачи нескольких строк параметризованных данных?