Ola boa tarde.
Tenho seguinte código.
using System;
using System.Collections;
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;
namespace Concessionaria
{
public partial class FrmCadVeiculos : Form
{
public FrmCadVeiculos()
{
InitializeComponent();
}
private Veiculo montaCadastro()
{
Veiculo veiculo = new Veiculo();
veiculo.Id = int.Parse(txtCodVeiculo.Text);
veiculo.Modelo = txtModelo.Text;
veiculo.Ano = int.Parse(txtAno.Text);
veiculo.Preco = float.Parse(txtPreco.Text);
veiculo.Fab = //AJUDA AQUI !!!!!!!!!!!!!!!!!!!!!!!
return veiculo;
}
private void label4_Click(object sender, EventArgs e)
{
}
private void FrmCadVeiculos_Load(object sender, EventArgs e)
{
cmbFabricante.Text = "Escolha um Fabricante";
ArrayList lista = new FabricanteDAO().getFabricantes();
for (int i = 0; i < lista.Count; i++)
{
Fabricante fab = (Fabricante)lista[i];
cmbFabricante.Items.Add(fab.Id + "-" + fab.Descricao);
}
}
private void btnAdd_Click(object sender, EventArgs e)
{
Veiculo fabricante = montaCadastro();
String msg = new FabricanteDAO().gravarFabricante(fabricante);
if (msg != "")
{
MessageBox.Show(msg, "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
}
</bbcode>
<bbcode>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Concessionaria
{
class Veiculo
{
public Veiculo (int id, string modelo, int ano, float preco, Fabricante fab)
{
this.Id = id;
this.Modelo = modelo;
this.Ano = ano;
this.Preco = preco;
this.Fab = fab;
}
public int Id { get; set; }
public string Modelo { get; set; }
public int Ano { get; set; }
public float Preco { get; set; }
public Fabricante Fab { get; set; }
}
}
</bbcode>
<bbcode>
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Concessionaria
{
class VeiculoDAO
{
public bool verificaVeiculo(Veiculo veiculo)
{
string sql;
bool resp;
try
{
sql = "SELECT modelo FROM veiculo WHERE ID_fabricante=@cmbFabricante AND modelo=@txtModelo";
SqlConnection conexao = Conecta.getConexao();
SqlCommand cmd = conexao.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@txtModelo", veiculo.Modelo);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
resp = true;
}
else
{
resp = false;
}
}
catch (SqlException ex)
{
MessageBox.Show("Falha na consulta\n" + ex.ToString(), "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
resp = false;
}
return resp;
}
public string gravarVeiculo(Veiculo veiculo)
{
string sql;
int retorno;
string resp = "";
if(verificaVeiculo(veiculo))
{
MessageBox.Show("Modelo já cadastrado para esse fabricante\n", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
try
{
SqlConnection conexao = Conecta.getConexao();
sql = "INSERT INTO veiculo ( ID, modelo, ano, preco, ID_frabricante)";
sql += "VALUES ( @txtCodVeiculo, @txtModelo, @txtAno, @txtPreco, @cmbFabricante)";
SqlCommand cmd = conexao.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@txtCodVeiculo", veiculo.Id);
cmd.Parameters.AddWithValue("@txtModelo", veiculo.Modelo);
cmd.Parameters.AddWithValue("@txtAno", veiculo.Ano);
cmd.Parameters.AddWithValue("@txtPreco", veiculo.Preco);
cmd.Parameters.AddWithValue("@cmbFabricante", veiculo.Fab);
retorno = cmd.ExecuteNonQuery();
if (retorno > 0)
{
resp = "Cadastro Efetuado !";
}
else
{
resp = "Cadastro não realizado !";
}
cmd.Dispose();
conexao.Dispose();
}
catch (SqlException ex)
{
resp = "ERRO: " + ex.ToString();
}
}
return resp;
}
}
}
A duvida é a seguinte como eu passo o objeto fabricante para meu método Fab do tipo frabricante e como eu mando apenas o ID do fabricante para o banco de dados ?