使用Ms Access 2013进行C#winform登录

时间:2014-12-24 01:27:43

标签: c# database login ms-access-2013

我正在使用MS Access 2013创建一个C#windows登录表单。 使用用户ID(自动编号)和密码(短文本)登录表单。 我的问题在于,每次单击LOGIN按钮时都会崩溃(或者我猜是语法错误)而我无法追踪问题,因为我还缺乏编程经验。

表用户

字段:user_Id(自动编号),密码(短文本),名称(短文本),类型(编号)

    private void btn_Login_Click(object sender, EventArgs e)
    {
        try
        {

            if (string.IsNullOrEmpty(txt_UserId.Text))
            {
                lbl_warningUser.Visible = true;
                lbl_warningUser.Text = "User ID is Empty";
            }
            if (string.IsNullOrEmpty(txt_Password.Text))
            {
                lbl_warningPass.Visible = true;
                lbl_warningPass.Text = "Password is Empty";
            }
            if (txt_UserId.Text !="" & txt_Password.Text != "")
            {
                string constring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Database/Health.accdb;";
                string query = ("SELECT COUNT(*) FROM User WHERE user_Id = @ID AND password = @Pass");
                using (OleDbConnection con = new OleDbConnection(constring))
                using (OleDbCommand cmd = new OleDbCommand(query, con))
                {
                    con.Open();
                    cmd.Parameters.AddWithValue("@ID", txt_UserId.Text);
                    cmd.Parameters.AddWithValue("@Pass", txt_Password.Text);

                    int result = (int)cmd.ExecuteScalar();
                    if (result > 0)
                    {
                        MessageBox.Show("Successfully Login");
                        con.Close();
                        this.Hide();
                        MainUI m = new MainUI();
                        m.Show();
                    }
                    else
                    {
                        MessageBox.Show("Incorrect User ID or Password");
                    }

                 con.Close();
                }

            }

        }
        catch (Exception ex)
        {
            MessageBox.Show("  "+ex);
        }

    }

2 个答案:

答案 0 :(得分:1)

我认为

User是MS Access中的保留字,因此您需要将其包装在方括号分隔符中。此外,您可能需要为COUNT函数结果指定别名:

"SELECT COUNT(*) AS qtyUsers FROM [User] WHERE user_Id = @ID AND password = @Pass"

答案 1 :(得分:0)

txt_UserId.Text有一个默认的字符串返回值,您是否将该值转换为整数然后尝试实际自动编号为整数。 首先转换您的值并尝试

    Convert.ToInt32(txt_UserId.Text)