如何在C#中的SQL查询字符串中插入变量

Voz*_*rpa 3 c# sqlite

我想为我的项目调整这个C#代码,但我不知道如何将我的变量的值添加到查询中.

private String SQLSearch = "SELECT * FROM MYDATA WHERE Name = myVariable";

我不知道如何在代码中插入'myVariable'.我试过这段代码:

String myVariable = "blablabla";

但它不起作用.我收到编译错误.

Seb*_*ebi 5

如果目标是为字符串添加可变值,则可以使用字符串插值.这看起来很...... 像这样:

string myText = "Hello World";
string myHelloWord = $"I say {myText}";
Run Code Online (Sandbox Code Playgroud)

但是不建议在Sql-Queries中这样做!在这里,您应该使用参数化查询.因此,您向sql添加一个特定元素,该元素由SqlParameter替换.您必须确定声明此参数.我们来看一个例子:

this.command.CommandText = "Select * From myValues Where id in (@param1, @param2)";
this.command.CommandType = CommandType.Text;
this.command.Parameters.Add(new SQLiteParameter("@param1", myVariable1));
this.command.Parameters.Add(new SQLiteParameter("@param2", myVariable2));
var reader = this.command.ExecuteQuery();
Run Code Online (Sandbox Code Playgroud)

此参数对字符串插值有一些优势.首先,您没有成为SQL注入的风险.第二种方法是您的数据库将缓存该语句.如果仅使用字符串插值来更改where子句,则始终会向数据库发送新的查询.所以数据库最多不能使用它的缓存.但是,如果您使用参数,则数据库知道您的查询,只需对更改的where子句做出反应.缓存效果更好.