我使用的是Access db。我需要验证它的管理员或用户,因为我想为他们打开不同的表单。但我找不到一种方法。我使用复选框来注册该员工是否为管理员,如下所示:
private void button2_Click(object sender, EventArgs e)
{
string strincon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\flavi\Desktop\Pet&Shop.2\PetShop\TelaAbertura\bin\Debug\DatabasePS.mdb;Persist Security Info=True";
string comando = "INSERT INTO Funcionario (Nome, Login, Senha, Email, Cargo, Admin) Values (@Nome, @Login, @Senha, @Email, @Cargo, @Admin) ";
OleDbConnection con = new OleDbConnection(strincon);
OleDbCommand com = new OleDbCommand(comando, con);
com.Parameters.Add("@Nome", OleDbType.VarChar).Value = txtNome.Text;
com.Parameters.Add("@Login", OleDbType.VarChar).Value = txtLogin.Text;
com.Parameters.Add("@Senha", OleDbType.VarChar).Value = txtSenha.Text;
com.Parameters.Add("@Email", OleDbType.VarChar).Value = txtEmail.Text;
com.Parameters.Add("@Cargo", OleDbType.VarChar).Value = txtCargo.Text;
com.Parameters.Add("@Admin", OleDbType.Boolean).Value = checkBox1.Checked;
这很好用,但是在登录表单中没有区别,因为我不知道如何使用登录和密码验证复选框,所以是这样的。
OleDbDataAdapter da;
DataTable dt = new DataTable();
da = new OleDbDataAdapter("Select * from Funcionario where Login='" + txtLogin.Text + "'and Senha= '" + txtSenha.Text + "'", con); //Senha = Password
da.Fill(dt);
if (dt.Rows.Count > 0)
{
FrmPrincipal frm = new FrmPrincipal();
frm.Show();
this.Visible = false;
}
else
{
MessageBox.Show("Login ou Senha Inválidos", "Ocorreu um Erro de Autenticação", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtLogin.Clear();
txtSenha.Clear();
}
发布于 2018-06-10 02:35:07
if (dt.Rows.Count > 0)
{
// you should have one row in the table. check for admin.
if(dt.Rows[0]["Admin"] == true)
{
etc.
如注释所述,将参数添加到适配器的查询中。始终使用参数。如果有人试图入侵你的数据库,它们被用来“清理”用户输入。
https://stackoverflow.com/questions/50777307
复制相似问题