Conexão Firebird e Login em C# com Windows Forms
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.