MELHOR MANEIRA DE RETORNAR VARISO REGISTROS
Galera estou ao poucos tentando deixar a codificação dos meus projetos da melhor forma possivel, de forma lenta mas continua.
Deem uma olhada nessa classe que criei:
ela esta funcionando quase 100%, só tenho um probleminha, como fazer para retornar uma vários registros do banco. Estava criando uma função que me retornava um datatable, dai vi em vários locais falando que é lento, e depois criei um função quase idêntica mas que retornava um datareader, só que encontrei um problema, tinha que deixar a conexao aberta ate preencher um grid,
queria a ajuda de você nesse ponto, esta lendo o tópico [ô]orientação a objetos[ô], mais achei meio difÃcil para mim no momento.
Desde já obrigado a todos.
Deem uma olhada nessa classe que criei:
class ClsUsuario
{
private string Tabela = [Ô]TabSenha[Ô];
public int CodUsuario { get; set; }
public string Usuario { get; set; }
public string Senha { get; set; }
public bool Select(string whereclause = [Ô][Ô])
{
bool ok = false;
string sql = [Ô]Select CodUsuario,Usuario,Senha from [Ô] + Tabela;
if (whereclause != string.Empty)
sql += [Ô] where [Ô] + whereclause;
clsConexao cnn = new clsConexao();
if (cnn.AbrirConexao())
{
OleDbDataReader dados = cnn.GetDataReader(sql);
while (dados.Read())
{
CodUsuario = (int)dados[[Ô]CodUsuario[Ô]];
Usuario = (string)dados[[Ô]Usuario[Ô]];
Senha = (string)dados[[Ô]Senha[Ô]];
}
cnn.FecharConexao();
cnn = null;
ok = true;
}
return ok;
}
public bool Insert()
{
bool ok = false;
string sql = [Ô]Insert into [Ô] + Tabela + [Ô] (CodUsuario,Usuario,Senha) Values ([Ô] + CodUsuario + [Ô],[ô][Ô] + Usuario + [Ô][ô],[ô][Ô] + Senha + [Ô][ô])[Ô];
clsConexao cnn = new clsConexao();
if(cnn.AbrirConexao())
{
ok = cnn.ExecutarComando(sql);
cnn.FecharConexao();
cnn = null;
}
return ok;
}
public bool Update(string whereclause)
{
bool ok = false;
string sql = [Ô]Update [Ô] + Tabela + [Ô] set Usuario = [ô][Ô] + Usuario + [Ô][ô], Senha = [ô][Ô] + Senha + [Ô][ô] [Ô] + whereclause;
clsConexao cnn = new clsConexao();
if (cnn.AbrirConexao())
{
ok = cnn.ExecutarComando(sql);
cnn.FecharConexao();
cnn = null;
}
return ok;
}
public bool Delete(string whereclause)
{
bool ok = false;
string sql = [Ô]Delete from [Ô] + Tabela + [Ô] where [Ô] + whereclause;
clsConexao cnn = new clsConexao();
if (cnn.AbrirConexao())
{
ok = cnn.ExecutarComando(sql);
cnn.FecharConexao();
cnn = null;
}
return ok;
}
}
ela esta funcionando quase 100%, só tenho um probleminha, como fazer para retornar uma vários registros do banco. Estava criando uma função que me retornava um datatable, dai vi em vários locais falando que é lento, e depois criei um função quase idêntica mas que retornava um datareader, só que encontrei um problema, tinha que deixar a conexao aberta ate preencher um grid,
queria a ajuda de você nesse ponto, esta lendo o tópico [ô]orientação a objetos[ô], mais achei meio difÃcil para mim no momento.
Desde já obrigado a todos.
Dá uma olhadinha aqui: http://www.macoratti.net/11/10/pp_dao1.htm
Crie um método na classe de acesso à dados (ex, UsuarioDAO) que retorna uma lista de usuários.
Exemplo:
O objeto DataGridView suporta o modelo de vinculação de dados implementado da interface IList.
Para alimentar a grade, é só passar a lista criada como fonte de dados do DataGridView.
Exemplo:
Exemplo:
public List<ClsUsuario> listarUsuario()
{
// abre conexão
// seleciona os dados no banco
// alimenta a lista com os registros
// fecha a conexão e retorna a lista populada
}
O objeto DataGridView suporta o modelo de vinculação de dados implementado da interface IList.
Para alimentar a grade, é só passar a lista criada como fonte de dados do DataGridView.
Exemplo:
grade.DataSource = new UsuarioDAO().listarUsuario();
valeu pela resposta Tecla,
mais uma duvida:
tenho a seguinte classe usuario:
e a seguinte classe permissões:
e estou realizando a seguinte consulta em outra classe:
o problema e que assim que é feito o primeiro loop a conexão é fechada. tenho quase certeza que o problema esta neste codigo:
[c]
public static List<clsPermissoes> Select(string whereclause = [Ô][Ô])
{
clsPermissoes entidade = new clsPermissoes();
List<clsPermissoes> lista = new List<clsPermissoes>();
string sql = [Ô]Select * from [Ô] + entidade.Tabela;
if (whereclause != string.Empty)
sql += [Ô] where [Ô] + whereclause;
clsConexao cnn = new clsConexao();
if (cnn.AbrirConexao())
{
OleDbDataReader dados = cnn.GetDataReader(sql);
while (dados.Read())
{
entidade = new clsPermissoes();
entidade.CodUsuario = (int)dados[[Ô]CodUsuario[Ô]];
entidade.CodRotina = (int)dados[[Ô]CodRotina[Ô]];
lista.Add(entidade);
}
cnn.FecharConexao();
cnn = null;
}
return lista;
}
[/b]
como posso resolver isso?
mais uma duvida:
tenho a seguinte classe usuario:
class ClsUsuario
{
public readonly string Tabela = [Ô]TabSenha[Ô];
public int CodUsuario { get; set; }
public string Usuario { get; set; }
public string Senha { get; set; }
public List<clsPermissoes> permissoes;
}
e a seguinte classe permissões:
class clsPermissoes
{
public string Tabela = [Ô]TabAcessos[Ô];
public int CodUsuario { get; set; }
public int CodRotina { get; set; }
}
e estou realizando a seguinte consulta em outra classe:
public static List<ClsUsuario> Select(string whereclause = [Ô][Ô])
{
ClsUsuario entidade = new ClsUsuario();
List<ClsUsuario> lista = new List<ClsUsuario>();
string sql = [Ô]Select * from [Ô] + entidade.Tabela;
if (whereclause != string.Empty)
sql += [Ô] where [Ô] + whereclause;
clsConexao cnn = new clsConexao();
if (cnn.AbrirConexao())
{
OleDbDataReader dados = cnn.GetDataReader(sql);
while (dados.Read())
{
entidade = new ClsUsuario();
entidade.CodUsuario = (int)dados[[Ô]CodUsuario[Ô]];
entidade.Usuario = (string)dados[[Ô]Usuario[Ô]];
entidade.Senha = (string)dados[[Ô]Senha[Ô]];
entidade.permissoes = clsPermissoesBll.Select([Ô]codUsuario = [Ô] + (int)dados[[Ô]CodUsuario[Ô]]);
lista.Add(entidade);
}
cnn.FecharConexao();
cnn = null;
}
return lista;
}
o problema e que assim que é feito o primeiro loop a conexão é fechada. tenho quase certeza que o problema esta neste codigo:
[c]
public static List<clsPermissoes> Select(string whereclause = [Ô][Ô])
{
clsPermissoes entidade = new clsPermissoes();
List<clsPermissoes> lista = new List<clsPermissoes>();
string sql = [Ô]Select * from [Ô] + entidade.Tabela;
if (whereclause != string.Empty)
sql += [Ô] where [Ô] + whereclause;
clsConexao cnn = new clsConexao();
if (cnn.AbrirConexao())
{
OleDbDataReader dados = cnn.GetDataReader(sql);
while (dados.Read())
{
entidade = new clsPermissoes();
entidade.CodUsuario = (int)dados[[Ô]CodUsuario[Ô]];
entidade.CodRotina = (int)dados[[Ô]CodRotina[Ô]];
lista.Add(entidade);
}
cnn.FecharConexao();
cnn = null;
}
return lista;
}
[/b]
como posso resolver isso?
Tópico encerrado , respostas não são mais permitidas