Могу ли я предложить использовать параметризованный запрос для защиты от уязвимостей SQL-инъекций?Если вам требуются специальные операторы SQL вместо хранимых процедур, рассмотрите возможность использования чего-то вроде этого:
С помощью команды ExecuteScalar()
можно обойтись, если вам требуется только значение первого столбца из первой строки:
string TName;
using (var conn = new SqlConnection(SomeConnectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT TrialName FROM dbo.CT WHERE NumId=@Trial";
cmd.Parameters.AddWithValue("@Trial", TrialId);
TName = cmd.ExecuteScalar().ToString();
}
Если вам требуется более одного значения, продолжайте использовать SqlDataReader:
string TName;
using (var conn = new SqlConnection(SomeConnectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = "SELECT TrialName FROM dbo.CT WHERE NumId=@Trial";
cmd.Parameters.AddWithValue("@Trial", TrialId);
using (var reader = cmd.ExecuteReader())
{
if (reader.Read())
{
TName = reader["TrialName"].ToString();
}
}
}