Conexão Firebird e Login em C# com Windows Forms

Design e engenharia3,98 KB

Conexão com Firebird e Login em C# no Windows Forms

Este exemplo demonstra como conectar uma aplicação C# ao banco de dados Firebird e realizar operações de login e cadastro de usuários em um formulário Windows Forms.

Importação da biblioteca

Inicialmente, é necessário importar o namespace do provedor de dados:

using FirebirdSql.Data.FirebirdClient;

Declaração da classe e da variável de conexão

namespace Plantao
{
    public partial class frmPlantao : Form
    {
        FbConnection cn; // Objeto de conexão com o banco de dados

        public frmPlantao()
        {
            InitializeComponent();
        }

Configuração da conexão ao ativar o formulário

No evento Activated, a string de conexão é montada com FbConnectionStringBuilder, que é um construtor de string de conexão e não a conexão em si.

private void frmPlantao_Activated(object sender, EventArgs e)
{
    FbConnectionStringBuilder stringConexao = new FbConnectionStringBuilder();

    stringConexao.Database = @"c:\Trabalho\USUARIO.fdb";
    stringConexao.UserID = "SYSDBA";
    stringConexao.Password = "masterkey";

    cn = new FbConnection();
    cn.ConnectionString = stringConexao.ConnectionString;

    cn.Open();
    // this.Text = "Plantão 26/09/2013 - CONECTADO"; // Apenas prova ao usuário se a conexão foi bem-sucedida
    cn.Close();
}

Validação de login

No evento btnOk_Click, são validados os campos de usuário e senha. Em seguida, executa-se uma consulta SQL para verificar se o usuário existe. O método Read() retorna true se encontrar uma linha correspondente.

private void btnOk_Click(object sender, EventArgs e)
{
    if ((txtUsuario.Text == "") || (txtSenha.Text == ""))
    {
        MessageBox.Show("Preencha os campos corretamente!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
        txtUsuario.Focus();
    }
    else
    {
        FbCommand cmd = new FbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select * from USUARIO where login='" + txtUsuario.Text + "' and senha = '" + txtSenha.Text + "';";
        cmd.Connection = cn;

        cn.Open();

        txtUsuario.Clear();
        txtSenha.Clear();

        FbDataReader tabelaUsuarios;
        tabelaUsuarios = cmd.ExecuteReader();

        // Read procura uma linha na tabela. Se encontrar, retorna true; caso contrário, false.
        if (tabelaUsuarios.Read())
            MessageBox.Show("Conectado", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        else
            MessageBox.Show("Usuário não cadastrado", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        cn.Close();
    }
}

Cadastro de usuário

No evento btnGravar_Click, o usuário e a senha informados são inseridos na tabela USUARIO.

private void btnGravar_Click(object sender, EventArgs e)
{
    if ((txtUsuario.Text == "") || (txtSenha.Text == ""))
    {
        MessageBox.Show("Preencha os campos corretamente!", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
        txtUsuario.Focus();
    }
    else
    {
        FbCommand cmd = new FbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "insert into USUARIO values ('" + txtUsuario.Text + "','" + txtSenha.Text + "');";
        cmd.Connection = cn;

        txtUsuario.Clear();
        txtSenha.Clear();

        cn.Open();
        cmd.ExecuteNonQuery();
        cn.Close();
    }
}
}
}

Observação de segurança

A montagem de comandos SQL por concatenação de strings está sujeita a SQL Injection. Recomenda-se utilizar parâmetros (cmd.Parameters.AddWithValue) e armazenar senhas com hash, e não em texto puro.

Baixar

PDF Word HTML