3 CAMADAS - SELECT

LEANDRO 10/05/2011 11:29:19
#373572
Bom Dia a todos.
Pessoal, estou com alguns problemas para fazer o select utilizando 3 camadas com o C#
tenho as outras operações como insert, update e delete e funcionam perfeitamente.
segue um exemplo

no Meu botão incluir do form tenho o seguinte codigo


private void btnIncluir_Click(object sender, EventArgs e)
{
objCentroCusto.VerificaBranco(txtCodigo.Text, txtDescricao.Text);
if (objCentroCusto.Verdadeiro.Equals(true))
{
objQuery = [Ô]INSERT INTO CENTROCUSTO(CEN_CODIGO,CEN_DESCRICAO)VALUES([ô][Ô] + txtCodigo.Text + [Ô][ô],[ô][Ô] + txtDescricao.Text + [Ô][ô])[Ô];
objFuncoes.Movimenta(objQuery);
MessageBox.Show([Ô]CENTRO DE CUSTO CADASTRADO COM SUCESSO[Ô]);
}
}


na minha Classe da regra de negocios, tenho o seguinte codigo


    public class FuncoesGeral
{
Conexao.Conexao objConexao = new Conexao.Conexao();
public void Movimenta(String strMovimenta)
{
try
{

objConexao.Conectar();
objConexao.MovimentaDados(strMovimenta);
objConexao.Desconectar();
}
catch
{
MessageBox.Show([Ô]ERRO NA MOVIMENTAÇÃO DO BANCO DE DADOS[Ô]);
}
}
}


e no meu projeto de conexao tenho o seguinte codigo


    public class Conexao
{
public MySqlConnection Conecta;
public MySqlDataReader DtReader;
public MySqlCommand Comando;

public void MovimentaDados(String Movimenta)
{
MySqlCommand Comando = new MySqlCommand(Movimenta, Conecta);
Comando.BeginExecuteNonQuery();
}



Isso tudo tirei base no Incluir, porem preciso fazer o select da mesma forma

form
        private void txtCodigo_TextChanged(object sender, EventArgs e)
{
objQuery = [Ô]SELECT CEN_DESCRICAO FROM CENTROCUSTO WHERE CEN_CODIGO = [ô][Ô] + txtCodigo.Text + [Ô][ô][Ô];
objCentroCusto.Select(objQuery);
}


regra de negocio

        public void Select(String Query)
{
objConexao.Conectar();
objConexao.SelectDados(Query);
if (objConexao.DtReader.Read())
{
varDescricao = objConexao.DtReader[[Ô]CEN_DESCRICAO[Ô]].ToString();
}
}


conexão
       public void SelectDados(String Query)
{
MySqlCommand Comando = new MySqlCommand(Query, Conecta);
Comando.BeginExecuteNonQuery();
MySqlDataReader DtReader = Comando.ExecuteReader();
if (DtReader.Read())
{
return;
}
}


ele da tudo certo até voltar para a regra de negocio, com o seguinte erro na linha
if (objConexao.DtReader.Read())

Referência de objeto não definida para uma instância de um objeto.

espero ter Sido especifico o suficiente.
ps: me falaram sobre Herança, porem não consegui do mesmo jeito
Obrigado
RXGOMES 10/05/2011 13:10:27
#373579
Acretido que o correto é assim

Regra de Negócio

public void Select(String Query)
{
objConexao.Conectar();
MySqlDataReader dataReader;
dataReader = objConexao.SelectDados(Query)
if (dataReader .read())
{
varDescricao = dataReader [[Ô]CEN_DESCRICAO[Ô]].ToString();
}
}


conexão
public MySqlDataReader SelectDados(String Query)
{
MySqlCommand Comando = new MySqlCommand(Query, Conecta);
Comando.BeginExecuteNonQuery();
MySqlDataReader DtReader = Comando.ExecuteReader();
if (DtReader.Read())
{
return DtReader;;
}
}
LEANDRO 10/05/2011 16:37:28
#373600
Então cara, eu fiz algo parecido, peguei no site do Marcoratti, porem ele da um exemplo com Grid e tenho TextBox no meu form


        public DataSet RetornaDataSet(string Sql)
{
MySqlCommand conn = new MySqlCommand(Sql, Conecta);
MySqlDataAdapter adp = new MySqlDataAdapter(Sql, Conecta);
DataSet ds = new DataSet();
adp.Fill(ds);
return ds;
}


regra de negocio

        public DataSet obtemClientes()
{
objConexao.Conectar();
return objConexao.RetornaDataSet([Ô]select * from centrocusto[Ô]);
objConexao.Desconectar();
}


no Form

        private void txtCodigo_TextChanged(object sender, EventArgs e)
{
objCentroCusto.obtemClientes();
}



agora nao sei como que pego os dados desse DataAdapter para os meus TextBox

Obrigado
LEANDRO 10/05/2011 18:12:16
#373608
Alguem?
TECLA 10/05/2011 20:18:07
#373611
Resposta escolhida
O que você vai fazer com o resultado da consulta?
Exibir em algum controle?
Qual?
LEANDRO 11/05/2011 10:43:37
#373645
Isso, irei exibir em um TextBox

Obrigado
TECLA 12/05/2011 20:34:07
#373817
Tente assim:

private void txtCodigo_TextChanged(object sender, EventArgs e)
{
TextBox1.Text = objCentroCusto.obtemClientes().Tables(0).Rows(0)([Ô]NomeDoCampo[Ô]).ToString();
}
SAMUKA 17/05/2011 11:43:20
#374158
Comecei a desenvolver um sistema usando 3 camadas. E empaquei exatamente na questão dos SELECT.
No meu caso eu criei uma classe Entidade para cada tabela existente no Banco de Dados.

Ficou um [ô]troço[ô] meio esquisito.
LEANDRO 17/05/2011 12:03:45
#374159
Então, eu passei do Select agora, com uma alternativa parecida com a do Tecla, agora estou com problemas no preenchimento de uma grid usando 3 camadas
Tópico encerrado , respostas não são mais permitidas