Вместо использования IDataReader
вы можете рассмотреть возможность использования IDbCommand
, чтобы сделать его более безопасным и гибким.
private static void ExecuteCommand(IDbConnection conn)
{
using (IDbCommand cmd = conn.CreateCommand())
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "ProcedureName";
IDataParameter param = cmd.CreateParameter();
param.ParameterName = "@parameterName";
param.Value = "parameter value";
cmd.Parameters.Add(param);
using (IDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
// get data from the reader
}
}
}
}
ИЛИ , даже если вы предпочитаете использовать IDataReader
с EnterpriseLibrary, всегда учитывайте оператор using
, который делает код намного более безопасным и менее уязвимым.
try
{
using (IDataReader dr = db.ExecuteReader(cmd))
{
while (dr.Read())
{
// do something with the data
}
}
}
catch (Exception e)
{
// exception handling
}
Надеюсь, это поможет. :)