Metodos select insert update e delete dentro de uma classe no c#
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();
}
}
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
Curtidas 0
Respostas
Joel Rodrigues
14/05/2012
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?
Primeiramente, verifique se essa sua string de conexão está correta. Acho que está faltando alguma coisa, não?
GOSTEI 0
Carlos Faria
14/05/2012
//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
//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
GOSTEI 0
Joel Rodrigues
14/05/2012
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:
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:
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();
GOSTEI 0
Carlos Faria
14/05/2012
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.
GOSTEI 0
Carlos Faria
14/05/2012
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.
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.
GOSTEI 0
Carlos Faria
14/05/2012
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();
}
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();
}
GOSTEI 0
Joao Moreira
14/05/2012
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();
gdView.DataSource = listaCidades;
gdView.DataTextField = campo1;
gdView.DataValueField = campo2;
gdView.DataBind();
GOSTEI 0
Joel Rodrigues
14/05/2012
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.
GOSTEI 0
Carlos Faria
14/05/2012
Valeu amigo , foi de grande ajuda sua contribuição Muito obrigado mesmo.
Vou seguir seu exemplo
Vou seguir seu exemplo
GOSTEI 0