通过c#在SQL-Server中编写预处理语句
本文关键字:预处理 语句 SQL-Server 通过 | 更新日期: 2023-09-27 17:52:50
我发现PHP中使用了mysqli_stmt_prepare()函数。SQL-Server的c#是什么样的?我找到了这个代码示例(使用parameterize命令)。这是我要找的吗?
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。
由于
SQL Server(至少通过SqlClient)使用命名参数。这段代码确实会执行一个参数化查询,但有几点注意事项:
- 它还没有正式"准备"(见
.Prepare()
),但你几乎永远不需要。 - 其中几个是
IDisposable
;你应该为他们设置using
s -
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中。
是的,但是没有办法使用'?"马克。