我有一个WPF应用程序,我正在其中获取
string someone = TextBox.text;
我想在以下查询中使用这个
query = " Select * From Table Where Title = someone "
我应该如何在查询中使用变量“someone”?
我有一个WPF应用程序,我正在其中获取
string someone = TextBox.text;
我想在以下查询中使用这个
query = " Select * From Table Where Title = someone "
我应该如何在查询中使用变量“someone”?
query = "Select * From Table Where Title = " + someone;
但是这样做不好,会让你容易受到SQL注入攻击的威胁。
你应该使用参数化查询。
像这样的查询可以帮助你入门。
using (var cn = new SqlClient.SqlConnection(yourConnectionString))
using (var cmd = new SqlClient.SqlCommand())
{
cn.Open();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * From Table Where Title = @Title";
cmd.Parameters.Add("@Title", someone);
}
以下内容来自Jon Skeet的答案,他的回答比我的更完整
请参阅SqlCommand.Parameters文档以获取更多信息。
基本上,由于各种原因,你不应将值嵌入到SQL语句中:
cmd.CommandText = "Select * From Table Where Tile = @Title, Thing = @Thing
cmd.Parameters.Add("@Title", someone); cmd.Parameters.Add("@Thing, thing);
- msarchet你应该使用参数化的SQL查询:
query = "SELECT * From TableName WHERE Title = @Title";
command.Parameters.Add("@Title", SqlDbType.VarChar).Value = someone;
请查看SqlCommand.Parameters文档以获取更多信息。
基本上你不应该将值嵌入到SQL语句中,因为:
declare @SqlQuery varchar(2000), @Fromdate varchar(20), @Todate varchar(20)
set @Fromdate='01 jan 2017'
set @Todate='30 mar 2017'
set @SqlQuery='select * from tblEmployee where tblEmployee.JDate between '''+ @Fromdate + ''' and '''+ @Todate+ ''''
print @SqlQuery