Metodos select insert update e delete dentro de uma classe no c#

14/05/2012

0

Olá galera

sou novo no c# Orientação o objetos aqui é fácil é difícil ao mesmo tempo.Criei duas classes e tudo deveria funcionar perfeitamente mas simplesmente eu nao consigo jogar o select * from tb_cidade no webform do aspnet aluguem poderia me dizer o que esta errado aqui ? desde já agradeço

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public class banco
{
public string _Conexao;
private SqlDataSource _Sql;

public banco()
{

_Conexao = @Data Source=meuDatabaseSQLserver2008#;
_Sql = new SqlDataSource();
_Sql.ConnectionString = _Conexao;

}


public GridView ExecutaSelect(string pSql)
{
_Sql.SelectCommand = pSql;
GridView grd = (GridView)_Sql.Select(DataSourceSelectArguments.Empty);
return (grd);
}


public int ExecutaInsert(string pSql)
{
_Sql.InsertCommand = pSql;
return _Sql.Insert();
}



public int ExecutaUpdate(string pSql)
{

_Sql.UpdateCommand = pSql;
return _Sql.Update();


}

public int ExecutaDelete(string pSql)
{

_Sql.DeleteCommand = pSql;
return _Sql.Delete();

}







}


using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.UI.WebControls;
using System.Data;


public class Cidade : banco
{

private String _Nm_Cidade;
private string _Nm_Uf;


public string Nm_Cidade
{
get
{
return _Nm_Cidade;
}
set
{
_Nm_Cidade = value;
}
}

public string Nm_Uf
{
get
{
return _Nm_Uf;
}
set
{
_Nm_Uf = value;
}
}


public Cidade()
{

this._Nm_Cidade = string.Empty;
this._Nm_Uf = string.Empty;

}

public Cidade(string pUf)
{

_Nm_Uf = Nm_Uf;
}


public GridView Selecionar()
{
return ExecutaSelect(select * from tb_cidade);
}


public int Inserir()
{
return ExecutaInsert(insert into tb_Cidades (Nm_cidade , Nm_Uf) +
values ( + this.Nm_Cidade.ToString() + , + this._Nm_Uf.ToString());
}




public int Alterar()
{
throw new System.NotImplementedException();
}

public int Excluir()
{
throw new System.NotImplementedException();
}
}
Carlos Faria

Carlos Faria

Responder

Posts

14/05/2012

Joel Rodrigues

Cara, qual é exatamente o erro que dá?
Primeiramente, verifique se essa sua string de conexão está correta. Acho que está faltando alguma coisa, não?
Responder

14/05/2012

Carlos Faria

//revisei todo o meu codigo até agora não consegui encontrar o erro.

//Esta classe acessa o banco e tem os metodos executaSelect , ExecutaInsert , ExecutaUpdate , Executadelete
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


public class banco
{
public string _Conexao;
private SqlDataSource _Sql;

public banco()
{

_Conexao = @Data Source=lbtecsys.sytes.net;Initial Catalog=dbjava;Persist Security Info=True;User ID=UserNet;Password=@@sysdba@@#;
_Sql = new SqlDataSource();
_Sql.ConnectionString = _Conexao;

}


public GridView ExecutaSelect(string pSql)
{
_Sql.SelectCommand = pSql;
GridView grd = (GridView)_Sql.Select(DataSourceSelectArguments.Empty);
return (grd);
}


public int ExecutaInsert(string pSql)
{
_Sql.InsertCommand = pSql;
return _Sql.Insert();
}



public int ExecutaUpdate(string pSql)
{

_Sql.UpdateCommand = pSql;
return _Sql.Update();


}

public int ExecutaDelete(string pSql)
{

_Sql.DeleteCommand = pSql;
return _Sql.Delete();

}



//Esta classe herda da classe banco tem algums metodos aqui estou trabalhando somente com o select

using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.UI.WebControls;
using System.Data;


public class Cidade : banco
{

private String _Nm_Cidade;
private string _Nm_Uf;


public string Nm_Cidade
{
get
{
return _Nm_Cidade;
}
set
{
_Nm_Cidade = value;
}
}

public string Nm_Uf
{
get
{
return _Nm_Uf;
}
set
{
_Nm_Uf = value;
}
}


public Cidade()
{
Nm_Cidade = string.Empty;
Nm_Uf = string.Empty;


}

public Cidade(string pUf)
{

Nm_Uf = pUf;
}



public int Inserir()
{
return ExecutaInsert(insert into tb_Cidades (Nm_cidade , Nm_Uf) +
values ( + Nm_Cidade.ToString() + , + Nm_Uf.ToString() +));
}



public GridView Selecionar()
{
return ExecutaSelect(select * from tb_cidade where Nm_Uf = + Nm_Uf.ToString());
}





public int Alterar()
{
throw new System.NotImplementedException();
}

public int Excluir()
{
throw new System.NotImplementedException();
}
}

}

//já tentei chamala de um webform usando um object adddatasource new object e apontando o mesmo para a classe da erro

//no envento onload do webform tentei também sem sucesso

grd.DataSource = cd.Selecionar();
grd.DataBind();


//Talves e meu jeito de chamar o metodo do webform esteja errado , a classe me parece ok

se alguem puder me dar um exemplo de como chamar a classe corretamente de um webform agradeço.
nao entendo também porque o metodo selecionar() as ser digitado no form nao pede paramentos ja que tenho um contrutor com parametros e outro sem parametros
Responder

14/05/2012

Joel Rodrigues

Bom, vou ser sincero. Eu não utilizaria um método que retornasse um GridView. O ideal seria algo mais flexível, retornando um DataTable ou uma List<tipo>.
Eu utilizaria algo do tipo:
public DataTable Selecionar(string sql)
{
SqlConnection conexao = new SqlConnection(StringConexao);
SqlCommand comando = conexao.CreateCommand();
comando.CommandText = sql;
SqlDataAdapter adaptador = new SqlDataAdapter(comando);
DataTable tabela = new DataTable();
conexao.Open();
adapdator.Fill(tabela);
conexao.Close();
return tabela;
}


Reparei que eu declarei todos os objetos dentro do método, mas você pode ter objetos globais para serem acessados em qualquer método.
Para usar, você faria:
meuGridView.DataSource = objeto.Selecionar(instrucaoSQL);
meuGridView.DataBind();
Responder

16/05/2012

Carlos Faria

Vou tentar seguir seu exemplo usando list ou table e amanha posto aqui.Eu segui aquelas dicas de uma vídeo aula de um cara que parece ser bem profissional no assunto mas o negocio não funciona.
Responder

16/05/2012

Carlos Faria

Cara perfeito.Nota 1 milhão para você !
No exemplo do cara da vídeo aula não deu certo o seu exemplo aqui rodou redondo.
Agora sim fico interessante trabalhar com orientação a objetos.
Valeu obrigado.
Responder

16/05/2012

Carlos Faria

Amigo
antes de fechar o post ultima pergunta:
Como você disse retornar em um gridview realmente não rola.
o seu método funcionou perfeitamente e no meu eu mudei o gridView para dataview, você acha que assim também seria bom ou não é uma pratica recomendada ?


Exemplo da classe completa abaixo agora sim funcionando.

public class banco
{
public string _Conexao;
private SqlDataSource _Sql;

public banco()
{

_Conexao = @Data Source=meudatabase.sytes.net;Initial Catalog=dbjava;Persist Security Info=True;User ID=UserNet;Password=minhasenha;
_Sql = new SqlDataSource();
_Sql.ConnectionString = _Conexao;

}




public DataView ExecutaSelect(string pSql)
{
_Sql.SelectCommand = pSql;
DataView dv = (DataView)_Sql.Select(DataSourceSelectArguments.Empty);
return (dv);
}


public int ExecutaInsert(string pSql)
{
_Sql.InsertCommand = pSql;
return _Sql.Insert();
}



public int ExecutaUpdate(string pSql)
{

_Sql.UpdateCommand = pSql;
return _Sql.Update();


}

public int ExecutaDelete(string pSql)
{

_Sql.DeleteCommand = pSql;
return _Sql.Delete();

}






Responder

16/05/2012

Joao Moreira

voce pode retornar uma lista de objetos List<cidade> e passar essa lista para a propriedade DataSource do gridview, mais ou menos assim:

gdView.DataSource = listaCidades;
gdView.DataTextField = campo1;
gdView.DataValueField = campo2;
gdView.DataBind();
Responder

16/05/2012

Joel Rodrigues

Pois é, cara, como eu disse, EU não acho essa prática interessante. É melhor você retornar uma coleção de dados (List<Tipo>) ou um DataTable, como eu já falei. Dessa forma, você poderá usar essa fonte de dados em qualquer tela e não só em ASP.NET mas também em Windows Forms e outros projetos. E tem mais, você pode precisar da lista de objetos apenas para uma conferência, ou para localizar um item, sem precisar associá-lo a um componente visual, dessa forma fica muito mais fácil tratar situações assim.
Responder

16/05/2012

Carlos Faria

Valeu amigo , foi de grande ajuda sua contribuição Muito obrigado mesmo.
Vou seguir seu exemplo
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar