SQL Server (по крайней мере, через SqlClient) использует именованные параметры. Этот код действительно выполнит параметризованный запрос, но несколько замечаний:
- формально он не был "подготовлен" (см.
.Prepare()
), но в любом случае вам это никогда не понадобится
- некоторые из этих объектов
IDisposable
; у вас должно быть using
s для них
DataTable
(и адаптер, и т. Д.) Будет работать , но находится в состоянии упадка (с предпочтением сопоставленных классов, IMO)
- видение
DataGridView
и SqlCommand
в одном и том же методе, вероятно, означает, что ваш код пользовательского интерфейса слишком близок к коду доступа к данным; Я бы понизил уровень доступа к данным, лично
Например:
DataTable tbl = new DataTable();
using(var conn = new SqlConnection(@"Data Source=..."))
using(var com = conn.CreateCommand())
{
com.CommandText = "select * from tbl1 where id<@id";
com.Parameters.AddWithValue("@id",4);
com.CommandType = CommandType.Text;
SqlDataAdapter dap = new SqlDataAdapter();
dap.SelectCommand = com;
conn.Open();
dap.Fill(tbl);
conn.Close();
}
return tbl;
(и привязать его к DataGridView
обратно в интерфейсе)
Конечно, если значение параметра всегда 4
, вы можете кодировать его непосредственно в TSQL.