.NET SqlDataReader:用户代码未处理SqlException

巴岑

使用创建的SQL Server表来构建简单的.NET Web应用程序。关于SqlDataReader,我不断收到错误消息,并一直停留在出错的地方。

这是我的错误:其他信息:关键字“表”附近的语法不正确。

这是我的代码:

编辑:

            bool authenticated = AuthenticateMe(txtUsername.Text, txtPassword.Text);

        if (authenticated)
        {
            Response.Redirect("Home.aspx");
        }
        else
        {
            Response.Redirect("Default.aspx");
        }
    }

    private bool AuthenticateMe(string username, string password)
    {
        //  string ErrorMessage = "";
        string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30";
        string commandText = "SELECT Username from [Table] where Username = @name AND Password = @pwd";
        //   try
        //  {
        using (SqlConnection sqlConnection1 = new SqlConnection(connectionString))
        using (SqlCommand cmd = new SqlCommand(commandText, sqlConnection1))
        {
            sqlConnection1.Open();
            cmd.Parameters.AddWithValue("@name", username);
            cmd.Parameters.AddWithValue("@pwd", password);
            int result = (int)cmd.ExecuteNonQuery();

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

        }

    }

第一版(修改前):

        protected void bnLogin_Click(object sender, EventArgs e)
    {

        bool authenticated = AuthenticateMe(txtUsername.Text, txtPassword.Text);

        if (authenticated)
        {
            Response.Redirect("Home.aspx");
        }
        else
        {
            Response.Redirect("Default.aspx");
        }
    }

    private bool AuthenticateMe(string userName, string password)
    {

        string connectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;Connect Timeout=30";

        SqlConnection sqlConnection1 = new SqlConnection(connectionString);
        sqlConnection1.Open();

        SqlCommand cmd = new SqlCommand("SELECT Username from Table where Username = userName");

        cmd.Connection = sqlConnection1;

        SqlDataReader reader = cmd.ExecuteReader();
        Response.Write("Entered Sucessfully");

        reader = cmd.ExecuteReader();
        string localUserName = (string)reader["Username"];

        sqlConnection1.Close();


        if (userName.Equals(localUserName))
        {
            return true;
        }

        else
        {
            return false;
        }
史蒂夫

您的AuthenticateMe方法似乎有点错误,无法验证用户身份

  • 您使用的保留关键字(表格)没有适当的定界符(方括号)
  • 您不会将用户名和密码传递给检查用户是否存在的查询
  • 您两次调用ExecuteReader(?)
  • 您检查查询返回的值是否与用于搜索的值相同(无用)

所以你可以这样重写代码

private bool AuthenticateMe(string userName, string password)
{
    string connectionString = @".....";
    string commandText = "SELECT COUNT(*) from [Table] where Username = @name AND Pass = @pwd");
    using(SqlConnection sqlConnection1 = new SqlConnection(connectionString))
    using(SqlCommand cmd = new SqlCommand(commandText, sqlConnection1))
    {
         sqlConnection1.Open();
         cmd.Parameters.AddWithValue("@name", username);
         cmd.Parameters.AddWithValue("@pwd", password);
         int result = Convert.ToInt32(cmd.ExecuteScalar());
         return (result > 0);
    }
}

另外,请记住,将密码以纯文本格式存储在数据库中被认为是一种不好的做法。如果有人获得了数据库的副本,应该对记忆的密码应用某种哈希函数,以防止出现任何安全问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在填充Checkboxlist时出现错误nullreferenceexception由用户代码未处理?Asp.net

来自分类Dev

执行期间用户代码错误未处理SqlException

来自分类Dev

用户代码未处理CryptographicException

来自分类Dev

ModelValidationException是未处理的用户代码

来自分类Dev

用户代码未处理CryptographicException

来自分类Dev

for循环中的用户代码未处理IndexOutOfRangeException

来自分类Dev

用户代码未处理C#FileNotFoundException

来自分类Dev

ProviderIncompatibleException由用户代码未处理

来自分类Dev

for循环中的用户代码未处理IndexOutOfRangeException

来自分类Dev

用户代码未处理无效的操作异常

来自分类Dev

用户代码未处理 SQL 异常

来自分类Dev

错误:用户代码未处理 XmlException

来自分类Dev

IOException未处理vb.net

来自分类Dev

VB.NET OverflowException未处理

来自分类Dev

在VB.NET中未处理InvalidCastException

来自分类Dev

未处理的异常:System.Net.WebException

来自分类Dev

将 log4net 从 2.0.8 降级到 2.0.0 并在代码运行之前获得未处理的异常

来自分类Dev

如何在VB.net中处理SqlDataReader空值

来自分类Dev

奇怪的错误:-用户代码未处理System.Web.HttpCompileException

来自分类Dev

如何解决此“用户代码未处理LocalProcessingException”的问题?

来自分类Dev

用户代码在连接打开时未处理 SQL 异常

来自分类Dev

索引超出范围异常未处理vb.net

来自分类Dev

USB AccessViolationException的C#.NET ReadFile未处理

来自分类Dev

NullReferenceException未处理asp.net实体框架

来自分类Dev

在ASP.NET中未处理LessJs文件

来自分类Dev

当用户未分配给客户端应用程序时,使用 ASP.Net Core 的 OKTA 身份验证会引发未处理的异常

来自分类Dev

sqlexception在C#中未处理

来自分类Dev

WPF用户控件未处理

来自分类Dev

用户未处理MOQ异常

Related 相关文章

  1. 1

    在填充Checkboxlist时出现错误nullreferenceexception由用户代码未处理?Asp.net

  2. 2

    执行期间用户代码错误未处理SqlException

  3. 3

    用户代码未处理CryptographicException

  4. 4

    ModelValidationException是未处理的用户代码

  5. 5

    用户代码未处理CryptographicException

  6. 6

    for循环中的用户代码未处理IndexOutOfRangeException

  7. 7

    用户代码未处理C#FileNotFoundException

  8. 8

    ProviderIncompatibleException由用户代码未处理

  9. 9

    for循环中的用户代码未处理IndexOutOfRangeException

  10. 10

    用户代码未处理无效的操作异常

  11. 11

    用户代码未处理 SQL 异常

  12. 12

    错误:用户代码未处理 XmlException

  13. 13

    IOException未处理vb.net

  14. 14

    VB.NET OverflowException未处理

  15. 15

    在VB.NET中未处理InvalidCastException

  16. 16

    未处理的异常:System.Net.WebException

  17. 17

    将 log4net 从 2.0.8 降级到 2.0.0 并在代码运行之前获得未处理的异常

  18. 18

    如何在VB.net中处理SqlDataReader空值

  19. 19

    奇怪的错误:-用户代码未处理System.Web.HttpCompileException

  20. 20

    如何解决此“用户代码未处理LocalProcessingException”的问题?

  21. 21

    用户代码在连接打开时未处理 SQL 异常

  22. 22

    索引超出范围异常未处理vb.net

  23. 23

    USB AccessViolationException的C#.NET ReadFile未处理

  24. 24

    NullReferenceException未处理asp.net实体框架

  25. 25

    在ASP.NET中未处理LessJs文件

  26. 26

    当用户未分配给客户端应用程序时,使用 ASP.Net Core 的 OKTA 身份验证会引发未处理的异常

  27. 27

    sqlexception在C#中未处理

  28. 28

    WPF用户控件未处理

  29. 29

    用户未处理MOQ异常

热门标签

归档