我有一个WPF应用程序中,我得到如何使用字符串变量在SQL语句中
string someone = TextBox.text;
我想在下面的查询
query = " Select * From Table Where Title = someone "
我应该如何去使用这个在查询中使用变量的人?
我有一个WPF应用程序中,我得到如何使用字符串变量在SQL语句中
string someone = TextBox.text;
我想在下面的查询
query = " Select * From Table Where Title = 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中嵌入你的价值观因各种原因:
你应该使用参数化SQL查询:
query = "SELECT * From TableName WHERE Title = @Title";
command.Parameters.Add("@Title", SqlDbType.VarChar).Value = someone;
见SqlCommand.Parameters的文档获取更多信息。
基本上你不应该在SQL中嵌入你的价值观因各种原因:
因为我的接受程度很高,所以至少有人看到接受的答案会看到最充分的信息。 – msarchet
@msarchet:够公平的。 –
最简单的就是使用C#Prepared sql。 Example on this post。你不必担心转义字符在您的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
你不应该!有没有听说过SQL注入或参数化查询? –
是的,这是非常糟糕的做法 –
在这里你可以阅读一些SQL注入的例子http://en.wikipedia.org/wiki/SQL_injection –