c#登录表格(从报名表中获取信息)

问题描述 投票:0回答:1

我正在尝试为市场创建一个应用程序。

我希望它为普通用户提供一个注册表单,这样他们就可以看到产品,所以我想要一个符号表单来插入用户信息。

然后,当他们尝试登录时,登录表单将从注册表单中获取信息。

然后打开一个普通的用户表单,我做到这一点,但我得到了这个错误

这是登录表单

    public OleDbConnection conect = new OleDbConnection();

    public Login()
    {
        InitializeComponent();
        conect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Mhamad\Desktop\form\Sign_Up.mdb;
                                        Persist Security Info=False;";
    }

    private void Log_in_Click(object sender, EventArgs e)
    {
        conect.Open();

        OleDbCommand command = new OleDbCommand();
        command.Connection = conect;

        command.CommandText = "select * from Sign_Up where UserName='" + User_Name.Text + "' and Password='" + Password.Text + "'";

        OleDbDataReader reader =  command.ExecuteReader();
        int count = 0;

        while(reader.Read())
        {
            count = count + 1;
        }

        if (count==1)
        {
            MessageBox.Show("User Name and Password Are Correct ");
            Admin admin = new Admin();
            admin.Show();
            this.Hide();
        }

        if (count > 1)
        {
            MessageBox.Show("Dublicated UserName And Password ");
        }
         else
        {
            MessageBox.Show("User Name and Password Are Not Correct ");
        }

这是注册表格

    public OleDbConnection conect = new OleDbConnection();

    public SignUp_Form()
    {
        InitializeComponent();
        conect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Mhamad\Desktop\form\Sign_Up.mdb;
                                        Persist Security Info=False;";
    }


    private void button1_Click(object sender, EventArgs e)
    {

        try
        {
            Login lognin = new Login();
            lognin.Show();
            this.Hide();

            conect.Open();
            OleDbCommand command = new OleDbCommand();

            command.Connection = conect;

            command.CommandText = 
                       "insert into Sign_Up 
                          ([FirstName],[LastName], [UserName],[Password]) 
                             values('"
                              + First.Text+ "','" 
                              + Last.Text + "','" 
                              + User.Text + "','" 
                              + Pass.Text + "')";

            command.ExecuteNonQuery();
            MessageBox.Show("Sign Up Succsaesful");

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

这是错误代码:

OleDbDataReader reader =  command.ExecuteReader();

System.Data.OleDb.OleDbException:'表'Sign_Up'已经由另一个用户独占打开,或者它已经通过用户界面打开,无法以编程方式进行操作。

我还想创建一个雇主表单和一个管理员,从同一表格中获取信息是可能的吗?

我正在使用数据库的访问权限

c# ms-access-2016
1个回答
0
投票

您没有关闭第一个表单上打开的第一个连接。您应该使用使用块,这将确保连接关闭并正确放置。

登录表格

        try
        {
            using (OleDbConnection conect = new OleDbConnection(connectionString))
            {
                conect.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = conect;
                command.CommandText = "select * from Sign_Up where UserName='" + User_Name.Text + "' and Password='" + Password.Text + "'";
                OleDbDataReader reader = command.ExecuteReader();
                int count = 0;
                while (reader.Read())
                {
                    count = count + 1;
                }
                if (count == 1)
                {
                    MessageBox.Show("User Name and Password Are Correct ");
                    Admin admin = new Admin();
                    admin.Show();
                    this.Hide();
                }
                if (count > 1)
                {
                    MessageBox.Show("Dublicated UserName And Password ");
                }
                else
                {
                    MessageBox.Show("User Name and Password Are Not Correct ");
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show($"Login form error: {ex.Message}");
        }

当代码退出使用块时,连接自动关闭。

注册表格

        try
        {
            Login lognin = new Login();
            lognin.Show();
            this.Hide();

            using (OleDbConnection conect = new OleDbConnection(connectionString))
            {
                conect.Open();
                OleDbCommand command = new OleDbCommand();

                command.Connection = conect;

                command.CommandText =
                           "insert into Sign_Up 
                              ([FirstName],[LastName], [UserName],[Password]) 
                         values('"
                          + First.Text+ "','" 
                          + Last.Text + "','" 
                          + User.Text + "','" 
                          + Pass.Text + "')";

                command.ExecuteNonQuery();
                MessageBox.Show("Sign Up Succsaesful"); 
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show($"Sign up error:{ex.message}");
        }

如果您需要员工和管理员角色,最好创建两个不同的表单,您可以在登录后打开。

© www.soinside.com 2019 - 2024. All rights reserved.