Я пытаюсь создать универсальный метод для вызова хранимых процедурC# Хранимые процедуры
Я хотел бы передать в параметрах в через массив
На данный момент у меня возникли проблемы при добавлении параметров к SqlCommand
Это то, что я до сих пор
Может кто-нибудь посоветовать
благодаря
Simon
Вызов метода
string[] paramNames = new string[1];
paramNames[0] = "@date = 2012-1-1";
string err="";
WriteToDatabase("exec LoadData", CommandType.StoredProcedure, paramNames, out err);
Метод
public static bool WriteToDatabase(
string sql,
CommandType commandType,
string[] paramNames,
out string errorText)
{
bool success = false;
errorText = "";
try
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
connection.Open();
List<SqlParameter> parameters = new List<SqlParameter>();
foreach (string paramName in paramNames)
{
parameters.Add(new SqlParameter() { ParameterName = paramName });
}
using (SqlCommand command = new SqlCommand()
{
Connection = connection,
CommandText = sql,
CommandType = commandType,
Parameters = parameters
})
command.ExecuteNonQuery();
connection.Close();
}
}
catch (SqlException sex)
{
log.Error("QueryDatabase SQLexception:" + sex.Message);
}
catch (Exception ex)
{
log.Error("QueryDatabase exception:" + ex.Message);
}
return success;
}
Вы хотите передать значение параметра в виде строки? –
Почему бы просто не передать массив (или список) SQLParameter? –
Каким образом это не удается? Кроме того, почему вы используете строку для параметров? И почему вы помещаете имя и значение в цепочке _same_, которые нужно проанализировать? Используйте что-то вроде словаря 'для строго типизированной пары ключ/значение. Наконец, ваша обработка исключений выбрасывает полезную информацию, такую как трассировки стека и внутренние исключения. Возможно, что-то не работает, и система представляет вам очень вескую причину, почему она не работает, и вы просто игнорируете ее. –
David