C# sql查询的字符串变量由框架更改

C# sql查询的字符串变量由框架更改,c#,asp.net,sql-server,ado.net,C#,Asp.net,Sql Server,Ado.net,这是一个奇怪的家伙。。。我有以下方法,它对名为tbl\u Users的表执行一个简单的SQL语句。但是,编译器或框架或任何正在更改SQL命令的东西 internal bool ValidateUser(string username, string password) { try { string sqlQuery = "SELECT UserName FROM tbl_Users where UserName=@UserName and Password=@Passwo

这是一个奇怪的家伙。。。我有以下方法,它对名为
tbl\u Users
的表执行一个简单的
SQL
语句。但是,编译器或框架或任何正在更改
SQL命令的东西

internal bool ValidateUser(string username, string password)
{
   try
   {
      string sqlQuery = "SELECT UserName FROM tbl_Users where UserName=@UserName and Password=@Password";

      SqlParameter[] parms = new SqlParameter[] {
         new SqlParameter("@UserName",username),
            new SqlParameter("@Password", password)};

      MembershipUserCollection users = FillUsers(sqlQuery, parms);
      if (users != null && users.Count > 0)
         return true;
      return false;
      }
   catch (Exception ex)
   {
      throw ex;
   }
}
正如您可以看到的那样,
SQL
是用参数硬编码的,现在看一下屏幕截图


肯定很奇怪。有两件事可能会有所帮助:

  • 如前所述,将表名括在方括号内--[tbl_用户]
  • 使用字符串文字--@“选择…”

  • 顺便说一句,我确实运行了你的代码片段,但它与发生在你身上的事情无关。你不知道真正的根本原因是什么。

    你真的需要对密码进行加密和哈希处理。它们不应该以明文形式存储。@Shyju看到屏幕截图了吗?尝试在sql查询中用方括号括起表名,如
    [tbl\u Users]
    ,然后看看会发生什么?我知道你现在在说什么了。。不知道该告诉你什么lol。那么你是说,当你跨过设置字符串变量
    sqlQuery
    的行时,它会立即神秘地改变,而没有任何其他代码运行?