Aprenda C#

  • Página Inicial
  • Contato!
  • Tudo sobre C# Parte 1!
  • Tudo sobre C# Parte 2!
  • Tudo sobre C# Parte 3!
  • Tudo sobre C# Parte 4!
  • Tudo sobre C# Parte 5!
  • Tudo sobre C# Parte 6!
  • Tudo sobre C# Parte 7!
  • Tudo sobre C# Parte 8!
  • Tudo sobre C# Parte 9!
  • Tudo sobre C# Parte 10!
  • C# com Banco de Dados Parte 2

    Restringindo o Acesso aos Menus

    O menu de Login não terá restrição, mas criaremos menus que serão restritos pelo nível de acesso do usuário.

    Crie o menu Manutenção e o item Banco de Dados no form principal, e também o menu Usuários com os itens Novo Usuário e Gestão de Usuários, e o menu Alunos com o item Novo Aluno, altere os names deles. Os mmenus Manutenção e Usuários serão restritos.

    No evento do Banco de Dados, coloque esse código:

    
    if(Global.logado) {
        if(Global.nivel >= 3) {
            // Procedimentos padrões e serem inseridos posteriormente.
        }
        else {
            MessageBox.Show("Acesso Não-Permitido!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    else {
        MessageBox.Show("É Necessário ter um Usuário Logado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    
    

    Faça o mesmo nos itens Novo Usuário e Gestão de Usuários, mas com o nível 2.

    No item novo aluno, faça assim:

    
    if(Global.logado) {
        // Procedimentos padrões:
    }
    else {
        MessageBox.Show("É Necessário ter um Usuário Logado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    
    

    Teste mudando o cadastro do SQLite o nível do usuário inserido.

    Tela de Cadastro de Usuários - Parte 1

    Crie a tela Windows Form para cadastro de usuários com o nome NovoUsuario. Crie os labels e caixas de textos para Nome, Usuário, Senha (coloque o password Char), Status (Pode ser um combobox) e Nível (esse use um numeric up down). Altere os names deles. No combobox teremos os itens A (ativo), B (bloqueado) e D (desligado). Adicione os botões Novo, Salvar e Cancelar e mude os names deles.

    PS: No combobox, para definir um item como padrão, coloque no construtor do form Novo Usuário, a linha cbStat.SelectedIndex = 2; (contado a partir do zero).

    No form principal, mude o código do evento novo usuário assim:

    
    if(Global.logado) {
        if(Global.nivel >= 2) {
            NovoUsuario novoUser = new NovoUsuario();
    
            novoUser.ShowDialog();
        }
        else {
            MessageBox.Show("Acesso Não-Permitido!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    else {
        MessageBox.Show("É Necessário ter um Usuário Logado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    
    

    Voltando ao form Novo Usuário, vamos fazer de maneiras diferentes as inserções de dados no banco.

    Crie uma classe com o nome Usuario, assim:

    
    class Usuario {
        public int id;
        public string nome;
        public string username;
        public string senha;
        public string status;
        public int nivel;
    }
    
    

    No form Novo Usuário, coloque o evento nos botões. Esse é o código do botão Salvar:

    
    Usuario user = new Usuario();
    
    user.nome = txtNome.Text.Trim();
    user.username = txtUser.Text.Trim();
    user.senha = CriptSenha.encripta(txtSenha.Text.Trim(), "SHA-1");
    user.status = cbStat.Text.ToCharArray()[0].ToString();
    user.nivel = (int)numNiv.Value;
    
    

    Tela de Cadastro de Usuários - Parte 2

    Na classe Banco, coloque esse método:

    
    // Funções do form Novo Usuário:
    
    public static void novoUser(Usuario user) {
        if(existUser(user)) {
            MessageBox.Show("Username já Existe!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        
            return;
        }
    
        try {
            SQLiteCommand comando = conexaoBanco().CreateCommand();
    
            comando.CommandText = "insert into usuario (nome, username, senha, status, nivel) values (@nome, @username, @senha, @status, @nivel)";
    
            comando.Parameters.AddWithValue("@nome", user.nome);
            comando.Parameters.AddWithValue("@username", user.username);
            comando.Parameters.AddWithValue("@senha", user.senha);
            comando.Parameters.AddWithValue("@status", user.status);
            comando.Parameters.AddWithValue("@nivel", user.nivel);
            
            comando.ExecuteNonQuery();
    
            MessageBox.Show("Novo Usuário Inserido!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
    
            conexaoBanco().Close();
        }
        catch(Exception ex) {
            MessageBox.Show($"ERRO: {ex.Message}", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
    
            conexaoBanco().Close();
        }
    }
    
    public static bool existUser(Usuario user) {
        bool res;
        SQLiteDataAdapter dataAp = null;
        DataTable dataTab = new DataTable();
        SQLiteCommand comando = conexaoBanco().CreateCommand();
    
        comando.CommandText = "select * from usuario where username = @username";
    
        comando.Parameters.AddWithValue("@username", user.username);
    
        comando.CommandType = CommandType.Text;
    
        dataAp = new SQLiteDataAdapter(comando.CommandText, conexaoBanco());
    
        dataAp.SelectCommand = comando;
    
        dataAp.Fill(dataTab);
    
        if(dataTab.Rows.Count == 1) {
            res = true;
        }
        else {
            res = false;
        }
    
        conexaoBanco().Close();
    
        return res;
    }
    
    

    Continuando o código anterior, complete o código do evento de Salvar:

    
    Usuario user = new Usuario();
    
    user.nome = txtNome.Text.Trim();
    user.username = txtUser.Text.Trim();
    user.senha = CriptSenha.encripta(txtSenha.Text.Trim(), "SHA-1");
    user.status = cbStat.Text.ToCharArray()[0].ToString();
    user.nivel = (int)numNiv.Value;
    
    if(!txtNome.Text.Trim().Equals("") && !txtUser.Text.Trim().Equals("") && !txtSenha.Text.Trim().Equals("")) {
        Banco.novoUser(user);
    }
    else {
        MessageBox.Show("Preencha Todos os Campos!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    
    

    No evento do novo, basta colocar isso:

    
    txtNome.Clear();
    txtUser.Clear();
    txtSenha.Clear();
    cbStat.Text = "Desligado";
    numNiv.Value = 1;
    
    txtNome.Focus();
    
    

    E no do Cancelar basta dar um this.Close().

    Form de Gestão de Usuários - Parte 1

    Adicione um formulário Windows Form no projeto com o nome GestaoUsuarios. Copie os labels, campos e etc (menos os botões). do Novo Usuário para o Gestão Usuários. Coloque um campo com o id txtId, que terá o tabStop como false e ReadOnly com true. Coloque um panel com o dock bottom e acima dele, logo abaixo dos campos, coloque um DataGridView. Dentro do panel colocar os botões Novo Salvar e Excluir. Altere o name do DataGridView para dgvUser e desabilite todas as opções marcadas na "setinha".

    Adicione também no construtor de gestão de usuários a linha cbStat.SelectedIndex = 2;.

    No Form principal, altere o evento de Gestão de Usuários assim:

    
    if(Global.logado) {
        if(Global.nivel >= 2) {
            GestaoUsuarios gestUser = new GestaoUsuarios();
    
            gestUser.ShowDialog();
        }
        else {
            MessageBox.Show("Acesso Não-Permitido!", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
    else {
        MessageBox.Show("É Necessário ter um Usuário Logado!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }