My class Cliente
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Objetos_de_Transferencia
{
public class Cliente
{
public int id_cli { get; set; }
public string nome { get; set; }
public int telefone { get; set; }
public int telemovel { get; set; }
public string morada { get; set; }
public string sexo { get; set; }
public DateTime data_nasc { get; set; }
public string email { get; set; }
}
}
My class ClienteDAO
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Data.Sql;
using Objetos_de_Transferencia;
namespace AcessoBancoDados
{
public class ClienteDAO
{
public ConnectionBD connectionBD = new ConnectionBD();
public SqlCommand cmd = null;
public SqlDataReader dr = null;
SqlConnection con = null;
Cliente cliente = null;
//// metodo para inserir um novo cliente
public void gravar(Cliente cliente) {
try
{
SqlConnection con = connectionBD.criarConexao();
cmd = new SqlCommand("insert into Cliente2(nome, telefone, telemovel, morada, sexo, data_nasc, email)values(@nome, @telefone, @telemovel, @morada, @sexo, @data_nasc, @email)", con);
cmd.Parameters.AddWithValue("@nome", cliente.nome);
cmd.Parameters.AddWithValue("@telefone", cliente.telefone);
cmd.Parameters.AddWithValue("@telemovel", cliente.telemovel);
cmd.Parameters.AddWithValue("@morada", cliente.morada);
cmd.Parameters.AddWithValue("@sexo", cliente.sexo);
cmd.Parameters.AddWithValue("@data_nasc", cliente.data_nasc);
cmd.Parameters.AddWithValue("@email", cliente.email);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
//// metodo para atualizar os dados
public void atualizar(Cliente cliente) {
try
{
SqlConnection con = connectionBD.criarConexao();
cmd = new SqlCommand("update Cliente2 set nome = @nome, telefone = @telefone, telemovel = @telemovel, morada = @morada, sexo = @sexo, data_nasc = @data_nasc, email = @email where id_cli = @id_cli", con);
cmd.Parameters.AddWithValue("@id_cli", cliente.id_cli);
cmd.Parameters.AddWithValue("@nome", cliente.nome);
cmd.Parameters.AddWithValue("@telefone", cliente.telefone);
cmd.Parameters.AddWithValue("@telemovel", cliente.telemovel);
cmd.Parameters.AddWithValue("@morada", cliente.morada);
cmd.Parameters.AddWithValue("@sexo", cliente.sexo);
cmd.Parameters.AddWithValue("@data_nasc", cliente.data_nasc);
cmd.Parameters.AddWithValue("@email", cliente.email);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
//// metodo para excluir um cliente
public void ecluir(int codigo) {
try
{
SqlConnection con = connectionBD.criarConexao();
cmd = new SqlCommand("delete from Cliente2 where id_cli = @id_cli", con);
cmd.Parameters.AddWithValue("@id_cli", codigo);
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
//// metodo para obter um cliente pelo id
public Cliente pesquizarPorCodigo(int codigo) {
try
{
SqlConnection con = connectionBD.criarConexao();
cmd = new SqlCommand("select * from Cliente2 where id_cli = @id_cli", con);
cmd.Parameters.AddWithValue("@id_cli", codigo);
dr = cmd.ExecuteReader();
/// vai ter que varrer tudo e procurar o que o usuario digitou
while (dr.Read()) {
cliente = new Cliente(); ///// assim consigo regatar tudo que esta dentro dessa classe Cliente
cliente.id_cli = Convert.ToInt32(dr["id_cli"]);
cliente.nome = Convert.ToString(dr["nome"]);
cliente.telefone = Convert.ToInt32(dr["telefone"]);
cliente.telemovel = Convert.ToInt32(dr["telemovel"]);
cliente.morada = Convert.ToString(dr["id_cli"]);
cliente.sexo = Convert.ToString(dr["id_cli"]);
cliente.data_nasc = Convert.ToDateTime(dr["id_cli"]);
cliente.email = Convert.ToString(dr["id_cli"]);
}
return cliente;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
con.Close();
}
}
//// metodo para listar todos os clientes cadastrados
public List<Cliente> listar() {
try
{
SqlConnection con = connectionBD.criarConexao();
cmd = new SqlCommand("select * from Cliente2", con);
////// muda um pouco
dr = cmd.ExecuteReader();
List<Cliente> lista = new List<Cliente>();
while(dr.Read()){
cliente.id_cli = Convert.ToInt32(dr["id_cli"]);
cliente.nome = Convert.ToString(dr["nome"]);
cliente.telefone = Convert.ToInt32(dr["telefone"]);
cliente.telemovel = Convert.ToInt32(dr["telemovel"]);
cliente.morada = Convert.ToString(dr["id_cli"]);
cliente.sexo = Convert.ToString(dr["id_cli"]);
cliente.data_nasc = Convert.ToDateTime(dr["id_cli"]);
cliente.email = Convert.ToString(dr["id_cli"]);
lista.Add(cliente);
}
return lista;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally {
con.Close();
}
}
}
}
Action on the button to register in the code Behind:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using AcessoBancoDados;
using Objetos_de_Transferencia;
namespace Apresentacao
{
public partial class fmCliente : Form
{
Cliente cliente = null;
ClienteDAO clienteDAO = null;
public fmCliente()
{
InitializeComponent();
}
private void tbnCadastrarCliente_Click(object sender, EventArgs e)
{
try
{
cliente = new Cliente();
cliente.nome = tbNome.Text;
cliente.telefone = Convert.ToInt32(tbTelefone.Text);
cliente.telemovel = Convert.ToInt32(tbTelemovel.Text);
cliente.morada = tbMorada.Text;
cliente.sexo = tbSexo.Text;
cliente.data_nasc = dtpData_Nasc.Value;
cliente.email = tbEmail.Text;
clienteDAO = new ClienteDAO();
clienteDAO.gravar(cliente); //// acessei a minha classa ClienteDAO
//// DataTable dt = new DataTable();
MessageBox.Show("Cliente "+cliente.nome+" cadastrado com sucesso!!!!!");
}
catch (Exception ex)
{
throw new Exception("Erro ao efetuar o cadastro:.... detalhes" + ex.Message);
}
}
}
}
The error occurs here:
throw new Exception("Erro ao efetuar o cadastro:.... detalhes" + ex.Message);
This is the error message:
Erro ao efetuar o cadastro:.... detalhesA referência de objecto não foi definida como uma instância de um objecto
The error occurs here in the save method call:
private void tbnCadastrarCliente_Click(object sender, EventArgs e)
{
try
{
cliente = new Cliente();
cliente.nome = tbNome.Text;
cliente.telefone = Convert.ToInt32(tbTelefone.Text);
cliente.telemovel = Convert.ToInt32(tbTelemovel.Text);
cliente.morada = tbMorada.Text;
cliente.sexo = tbSexo.Text;
cliente.data_nasc = dtpData_Nasc.Value;
cliente.email = tbEmail.Text;
clienteDAO = new ClienteDAO();
clienteDAO.gravar(cliente); //// acessei a minha classa ClienteDAO
//// DataTable dt = new DataTable();
MessageBox.Show("Cliente "+cliente.nome+" cadastrado com sucesso!!!!!");
}
catch (Exception ex)
{
throw new Exception("Erro ao efetuar o cadastro:.... detalhes" + ex.Message);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using AcessoBancoDados.Properties; //// para poder pegar a minha string de conexao
namespace AcessoBancoDados
{
public class ConnectionBD
{
//criar a minha conexao e rtorna a minha string de conexao
public SqlConnection criarConexao()
{
return new SqlConnection(Settings.Default.connectionString); //pegando a minha string de conexao com a minha classe setting para trazer a string Conexao
}
}
}