Baixe o app para aproveitar ainda mais
Prévia do material em texto
DOCENTE: JOSÉ QUEIRÓS UNIVERSIDADE DE BELAS – UNIBELAS FACULDADE DE ENGENHARIA DEPARTAMENTO DE ENGENHARIA INFORMÁTICA __________________ || ____________________ DISCIPLINA: POO-IV E-mail: jose.queiros@fduan.ao Windows Forms .NET Criar um aplicativo Windows Forms no Visual Studio com C# Windows Forms .NET Criar um aplicativo Windows Forms no Visual Studio com C# A aplicação possui somente um formulário e faz o CRUD -Inclusão, exclusão, atualização e selecção - na tabela Contatos da base de dados Cadastro do SQL Server. Windows Forms .NET script SQL para criar a tabela Contatos USE[Cadastro] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Contatos] ( [id][int] IDENTITY(1, 1) NOT NULL, [nome] [nchar] (100) NULL, [endereco][nchar] (200) NULL, [telemovel][nchar] (15) NULL, [email][nchar] (100) NULL, CONSTRAINT[PK_Contatos] PRIMARY KEY CLUSTERED ( [id] ASC )WITH(PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON[PRIMARY] ) ON[PRIMARY] GO Windows Forms .NET script C# usado para criar o aplicativo Devemos incluir no projecto uma referência ao namespace : System.Data.SqlClient e System.Data para aceder os recursos da ADO .NET. using System; using System.Data; using System.Windows.Forms; using System.Data.SqlClient; Windows Forms .NET script C# usado para criar o aplicativo No início do formulário vamos declarar a string de conexão e algumas variáveis objectos para ser usado no projecto: public partial class Form1 : Form { SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=Cadastro;Integrated Security=True"); SqlCommand cmd; SqlDataAdapter adapt; int id = 0; public Form1() { InitializeComponent(); ExibirDados(); } Windows Forms .NET script C# usado para criar o aplicativo No construtor do formulário chamamos o método ExibirDados() para aceder a tabela e exibir informações no controle DataGridView public Form1() { InitializeComponent(); ExibirDados(); } Windows Forms .NET script C# usado para criar o aplicativo A seguir temos o código do método ExibirDados() que abre a conexão, cria um DataTable e acede todos os registros da tabela Contatos e preenche o DataTable exibindo-o a seguir no DatagridView: private void ExibirDados() { try { con.Open(); DataTable dt = new DataTable(); adapt = new SqlDataAdapter("SELECT * FROM Contatos", con); adapt.Fill(dt); dgvAgenda.DataSource = dt; } catch { throw; } finally { con.Close(); } } Windows Forms .NET script C# usado para criar o aplicativo A seguir temos o código do botão Novo qu e limpa os campos do formulário : private void btn_salvar_Click_1(object sender, EventArgs e) { if (textNome.Text != "" && textEndereco.Text != "" && textTelemovel.Text != "" && textEmail.Text != "") { try { cmd = new SqlCommand("INSERT INTO Contatos(nome,endereco,celular,telefone,email) VALUES(@nome,@endereco,@celular,@telefone,@email)", con); con.Open(); cmd.Parameters.AddWithValue("@nome", textNome.Text.ToUpper()); cmd.Parameters.AddWithValue("@endereco", textEndereco.Text.ToUpper()); cmd.Parameters.AddWithValue("@telemovel", textTelemovel.Text.ToUpper()); cmd.Parameters.AddWithValue("@email", textEmail.Text.ToLower()); cmd.ExecuteNonQuery(); MessageBox.Show("Cadastro feito com sucesso..."); } catch (Exception ex) { MessageBox.Show("Erro : " + ex.Message); } finally { con.Close(); ExibirDados(); // LimparDados(); } } else { MessageBox.Show("Informe todos os dados requeridos"); Windows Forms .NET Para salvar as informações de um novo Contato usamos o código a seguir no botão Salvar: private void btn_salvar_Click_1(object sender, EventArgs e) { if (textNome.Text != "" && textEndereco.Text != "" && textTelemovel.Text != "" && textEmail.Text != "") { try { cmd = new SqlCommand("INSERT INTO Contatos(nome,endereco,celular,telefone,email) VALUES(@nome,@endereco,@celular,@telefone,@email)", con); con.Open(); cmd.Parameters.AddWithValue("@nome", textNome.Text.ToUpper()); cmd.Parameters.AddWithValue("@endereco", textEndereco.Text.ToUpper()); cmd.Parameters.AddWithValue("@telemovel", textTelemovel.Text.ToUpper()); cmd.Parameters.AddWithValue("@email", textEmail.Text.ToLower()); cmd.ExecuteNonQuery(); MessageBox.Show("Cadastro feito com sucesso..."); } catch (Exception ex) { MessageBox.Show("Erro : " + ex.Message); } finally { con.Close(); ExibirDados(); // LimparDados(); } } else { MessageBox.Show("Informe todos os dados requeridos"); } } Windows Forms .NET private void btn_novo_Click(object sender, EventArgs e) { textNome.Text = ""; textEmail.Text = ""; textTelemovel.Text = ""; textEndereco.Text = ""; textNome.Focus(); } A seguir temos o código do botão Novo que limpa os campos do formulário : Windows Forms .NET private void btn_actualizar_Click(object sender, EventArgs e) { if (textNome.Text != "" && textEndereco.Text != "" && textTelemovel.Text != "" && textEmail.Text != "") { try { cmd = new SqlCommand("UPDATE Contatos SET nome=@nome, endereco=@endereco, celular=@celular,telefone=@telefone,email=@email WHERE id=@id", con); con.Open(); cmd.Parameters.AddWithValue("@id", id); cmd.Parameters.AddWithValue("@nome", textNome.Text.ToUpper()); cmd.Parameters.AddWithValue("@endereco", textEndereco.Text.ToUpper()); cmd.Parameters.AddWithValue("@telemovel", textTelemovel.Text.ToUpper()); cmd.Parameters.AddWithValue("@email", textEmail.Text.ToLower()); cmd.ExecuteNonQuery(); MessageBox.Show("Registro atualizado com sucesso..."); } catch (Exception ex) { MessageBox.Show("Erro : " + ex.Message); } finally { con.Close(); ExibirDados(); // LimparDados(); } } else { MessageBox.Show("Informe todos os dados requeridos"); } } Para atualizar registro definimos uma instrução SQL - UPDATE SET. Windows Forms .NET private void btn_eliminar_Click(object sender, EventArgs e) { if (id != 0) { if (MessageBox.Show("Deseja Eliminar este registro ?", "Agenda", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { try { cmd = new SqlCommand("DELETE Contatos WHERE id=@id", con); con.Open(); cmd.Parameters.AddWithValue("@id", id); cmd.ExecuteNonQuery(); MessageBox.Show("registro eliminado com sucesso...!"); } catch (Exception ex) { MessageBox.Show("Erro : " + ex.Message); } finally { con.Close(); ExibirDados(); //LimparDados(); } } } else { MessageBox.Show("Selecione um registro para eliminar"); } } O código para excluir um contato usa a instrução SQL DELETE com a cláusula WHERE e o código do contato Windows Forms .NET private void dgvAgenda_CellContentClick(object sender, DataGridViewCellEventArgs e) { try { id = Convert.ToInt32(dgvAgenda.Rows[e.RowIndex].Cells[0].Value.ToString()); textNome.Text = dgvAgenda.Rows[e.RowIndex].Cells[1].Value.ToString(); textEndereco.Text = dgvAgenda.Rows[e.RowIndex].Cells[2].Value.ToString(); textTelemovel.Text = dgvAgenda.Rows[e.RowIndex].Cells[4].Value.ToString(); textEmail.Text = dgvAgenda.Rows[e.RowIndex].Cells[5].Value.ToString(); } catch { } } O utilizador pode seleccionar uma linha do controle DataGridView para exibir os respectivos dados nas caixas de texto do formulário. O código que faz isso é o seguinte: Windows Forms .NET Este projecto foi criado usando uma abordagem para iniciantes mas ele fere os princípios das boas práticas de programação visto que o formulário além de apresentar os dados também faz o acesso e a manutenção dos dados. Em uma aplicação mais robusta recomenda-se separar o código de acesso a dados em uma classe ou um novo projecto para separar as responsabilidades. Fica como um desafio a criação de uma classe para aceder os dados e a remoção de todo o código de acesso a dados e suas referências do formulário. Windows Forms .NET C# - Agenda de Contactos - CRUD com SQL Server
Compartilhar