这段代码是用C#编写的,它调用数据库来从中获取数据。但是我不明白“什么是b.CompRec =?”意味着
public string GetFileNameAndTitle(int compRec)
{
string fileNameAndTitle = "";
string sql = "SELECT a.FileName, a.Title FROM (Files a INNER JOIN Components b ON a.RecNo=b.FileRec) WHERE b.CompRec = ?";
using (OleDbCommand cmd = new OleDbCommand(sql, cn))
{
cmd.Parameters.AddWithValue("@CompRec", compRec);
OpenConnection(); }
答案 0 :(得分:10)
这是一个参数化语句。
cmd.Parameters.AddWithValue("@CompRec", compRec);
该行设置在服务器上执行查询时的实际值。这可以防止SQL注入,并且是100%正确的方法!
答案 1 :(得分:2)
它基本上是一个占位符,您可以在以后放置数据。这使您可以从查询中使用的数据中分离SQL语句。这是参数化语句的语法。