且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在sql语句中使用字符串变量

更新时间:2023-01-19 17:11:36

你可以这样做

query = "Select * From Table Where Title = " + someone;

但这很糟糕,而且会让你面临 SQL 注入

But that is bad and opens you to SQL Injection

您应该只使用参数化查询

You should just use a parameterized query

这样的事情应该会让你开始

Something like this should get you started

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 的回答,因为他的回答比我的更完整

From Jon Skeet's answer since his was more complete than mine

查看SqlCommand.Parameters 了解更多信息.

基本上,出于各种原因,您不应将值嵌入 SQL 本身:

Basically you shouldn't embed your values within the SQL itself for various reasons:

  • 混合代码和数据是不雅的
  • 它让您面临 SQL 注入除非你非常小心地逃避
  • 您必须担心数字、日期和其他内容的格式和 i18n 详细信息次等
  • 当查询保持不变时,只有值改变,优化器要做的工作更少——它可以查找直接使用先前优化的查询,因为它将完美匹配SQL 的术语.