我正在尝试为市场创建一个应用程序。
我希望它为普通用户提供一个注册表单,这样他们就可以看到产品,所以我想要一个符号表单来插入用户信息。
然后,当他们尝试登录时,登录表单将从注册表单中获取信息。
然后打开一个普通的用户表单,我做到这一点,但我得到了这个错误
这是登录表单
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'已经由另一个用户独占打开,或者它已经通过用户界面打开,无法以编程方式进行操作。
我还想创建一个雇主表单和一个管理员,从同一表格中获取信息是可能的吗?
我正在使用数据库的访问权限
您没有关闭第一个表单上打开的第一个连接。您应该使用使用块,这将确保连接关闭并正确放置。
登录表格
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}");
}
如果您需要员工和管理员角色,最好创建两个不同的表单,您可以在登录后打开。