我发现mysqli_stmt_prepare()函数在PHP中使用了预处理语句。 C#中的SQL-Server是什么样的? 我找到了这个代码示例(使用参数化命令)。这就是我要找的东西吗?
SqlConnection conn = new SqlConnection();
SqlCommand com = new SqlCommand();
SqlDataAdapter dap = new SqlDataAdapter();
DataTable tbl = new DataTable();
SqlParameter param = new SqlParameter();
conn.ConnectionString = @"Data Source=...";
com.Connection = conn;
com.CommandText = "select * from tbl1 where id<@id";
com.Parameters.AddWithValue("@id",4);
com.CommandType = CommandType.Text;
dap.SelectCommand = com;
conn.Open();
dap.Fill(tbl);
conn.Close();
dataGridView1.DataSource = tbl;
如果不是那么什么? 如果是,请告诉我如何使用字符'?'而不是在命令文本中写@id 感谢
答案 0 :(得分:2)
SQL Server(至少通过SqlClient)使用命名参数。该代码确实会执行参数化查询,但需要注意几点:
.Prepare()
),但你几乎不需要反正IDisposable
;你应该为他们using
DataTable
(以及适配器等)将工作,但处于拒绝状态(首选的地图类,IMO)DataGridView
和SqlCommand
可能意味着您的UI代码太靠近数据访问代码;我个人会将数据访问内容推到一个水平例如:
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;
(并将其绑定到UI上的DataGridView
)
当然,如果参数值始终为4
,您可以直接将其编码到TSQL中。
答案 1 :(得分:-1)
是的,但是无法使用'?'标记