繁体   English   中英

我的SQL语句出了什么问题,有些地方不起作用

[英]What's wrong with my SQL statement, something isn't working

我有一个非常简单的方法,称为检查用户密码是否正确。 对为什么它不起作用有任何帮助吗? 这是用于Microsoft SQL Server。

public bool UserNameExists()
    {
        using (SqlConnection con = new SqlConnection("CONNECTION STRING AQUI!"))
        {
            con.Open();
            try
            {
                using (SqlCommand command = new SqlCommand(string.Format("SELECT * FROM Policia WHERE NumeroPlaca = '{0}' AND Password = '{1}'", Session.Contents["username"], Session.Contents["password"]), con))
                {
                    SqlDataReader reader = command.ExecuteReader();
                    if (reader.FieldCount > 0)
                    {
                        return true;
                    } 
                    else 
                    {
                        return false;
                    }
                }
            }
            catch
            {

            }

            return false;
        }
    }

您也可以这样做:

"SELECT COUNT(*) FROM Policia..."

接着:

int result = Convert.ToInt32(command.ExecuteScalar());
if (result > 0)
{
  return true;
} 
else 
{
  return false;
}

完整代码:

public bool UserNameExists()
{
  int result = int.MinValue;

  using (SqlConnection connection = new SqlConnection(_connectionString))
  {
    connection.Open();
    SqlCommand command = new SqlCommand();
    command.Connection = connection;
    command.CommandType = CommandType.StoredProcedure;
    command.CommandText = "SELECT COUNT(*) FROM Policia WHERE NumeroPlaca = @username AND Password = @password";
    command.Parameters.Clear();
    command.Parameters.Add("@username", SqlDbType.VarChar).Value = Session.Contents["username"];
    command.Parameters.Add("@password", SqlDbType.VarChar).Value = Session.Contents["password"];
    result = Convert.ToInt32(command.ExecuteScalar());
  }

  if (result > 0)
  {
    return true;
  }
  {
    return false;
  }
}

FieldCount获取当前行中的列数,该列数始终为非零。 您正在寻找结果集中的行数。 使用HasRows属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM