ответ FlyingStreudel это хорошо, но я адаптировал этот код, чтобы эта версия демонстрировала лучшие практики (ссылки внизу). Вы также можете использовать корпоративную библиотеку Microsoft, которая даст вам надежные классы доступа к данным.
private string _connectionString = "yourconnectionstring"; // from web.config, or wherever you store it
public static SqlDataReader executeProcedure(string commandName,
Dictionary<string, object> params)
{
SqlConnection conn = new SqlConnection(_connectionString);
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandType = CommandType.StoredProcedure;
comm.CommandText = commandName;
if (params != null)
{
foreach(KeyValuePair<string, object> kvp in params)
comm.Parameters.Add(new SqlParameter(kvp.Key, kvp.Value));
}
return comm.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
используется, например, так:
Dictionary<string, object> paras = new Dictionary<string, object>();
paras.Add("user_name", "Timmy");
paras.Add("date", DateTime.Now);
using(SqlDataReader results = executeProcedure("sp_add_user", paras))
{
while (results.Read())
{
//do something with the rows returned
}
}
Ссылки:
How Microsoft use Connections in Enterprise Library
Keeping an SqlConnection open is 'foo bar'
Returning a data reader from a class
Ouch. Я думаю, вам нужно уточнить или переосмыслить свой вопрос. Если вы спрашиваете нас, как обернуть это методом, вам нужна дополнительная помощь, чем мы можем вам дать. Кроме того, вам не хватает дерьма при использовании вызовов и/или Dispose(). –
** Я все еще не хочу переопределять соединение и открывать его. ** Можете ли вы повторить это? Я не понимаю. – McGarnagle
Сначала вы прочитали документацию MSDN на SqlConnection, которая ответит на половину ваших вопросов. – ErnieL