参数化SQL查询C#

参数化SQL查询C#,c#,sql-server,parameters,C#,Sql Server,Parameters,这是我写的一个简单的查询。将其参数化以防止SQL注入的最佳方法是什么 string selectQuery = "select [ID] from [myDB].[dbo].[myTable] where [myName] = '" + user.globalUserName + "'"; 您可以使用@定义参数,如下所示: string selectQuery = "select [ID] from [myDB].[dbo].[myTable] where [myName] = @usern

这是我写的一个简单的查询。将其参数化以防止SQL注入的最佳方法是什么

string selectQuery = "select [ID] from [myDB].[dbo].[myTable] where [myName] = '" +  user.globalUserName + "'";

您可以使用
@
定义参数,如下所示:

string selectQuery = "select [ID] from [myDB].[dbo].[myTable] where [myName] = @username;";
cmd.Parameters.Add("@username", SqlDbType.VarChar);
cmd.Parameters["@username"].Value = user.globalusername;
cmd.Parameters.AddWithValue("@Username", user.globalusername);
然后可以使用
命令定义参数。参数
函数如下:

string selectQuery = "select [ID] from [myDB].[dbo].[myTable] where [myName] = @username;";
cmd.Parameters.Add("@username", SqlDbType.VarChar);
cmd.Parameters["@username"].Value = user.globalusername;
cmd.Parameters.AddWithValue("@Username", user.globalusername);
或者像这样:

string selectQuery = "select [ID] from [myDB].[dbo].[myTable] where [myName] = @username;";
cmd.Parameters.Add("@username", SqlDbType.VarChar);
cmd.Parameters["@username"].Value = user.globalusername;
cmd.Parameters.AddWithValue("@Username", user.globalusername);
Ben,有了这个,我得到了用户名的“必须声明标量变量”。我正在使用“或类似此”选项