OBTER DADOS DO BD
Boa noite,
Comecei a trabalhar com VB.net, firebird 2.5, ado.net, e estou com alguma dúvidas
No VB6 quando eu queria exibir algum dado do BD eu fazia assim:
Dim TB as new adodb.recodrset
tb.open [Ô]select * from cliente[Ô],conexão
msgbox tb!nome
Isso me exibiria o nome do cliente, mas qual a melhor maneira de fazer isso no .net agora ?
Comecei a trabalhar com VB.net, firebird 2.5, ado.net, e estou com alguma dúvidas
No VB6 quando eu queria exibir algum dado do BD eu fazia assim:
Dim TB as new adodb.recodrset
tb.open [Ô]select * from cliente[Ô],conexão
msgbox tb!nome
Isso me exibiria o nome do cliente, mas qual a melhor maneira de fazer isso no .net agora ?
dim cmd as new FbCommand
cmd.commandtext = [Ô]select * from cliente[Ô]
cmd.connection = FbConnection [ô]já previamente conectado
dim rs as FbDataReader = cmd.ExecuteReader
messagebox.show rs.GetString([Ô]Nome[Ô])
algo assim...
cmd.commandtext = [Ô]select * from cliente[Ô]
cmd.connection = FbConnection [ô]já previamente conectado
dim rs as FbDataReader = cmd.ExecuteReader
messagebox.show rs.GetString([Ô]Nome[Ô])
algo assim...
Desse modo dá certo, mas eu preciso fazer um movelast pra pegar o ultimo registro e não dá pra fazer isso com um datareader, preciso aprender fazer com o dataser ou datatable.
Precisa ver um registro especÃfico? Use os critérios da cláusula where...
KERPLUNK, na verdade não é um registro especifico, eu to sentindo falta da função Movelast, Movefirst, Moveprevious que eu uso nas recordsets no VB6. Neste caso eu queria pegar o código do último item cadastrado e somar +1 para gerar o novo código do próximo registro, pesquisando pela net eu vi que existe o tal de Datarow, achei um pouco mais complicado, mas pelo jeito essa deve ser a solução para este caso né ?
Citação:mas pelo jeito essa deve ser a solução para este caso né ?
Não. Se você precisa pegar o maior valor de uma coluna e somar um, você usa a função Max do SQL, assim:
Select max(Coluna) + 1 from tabela
No código ficaria:
dim cmd as new FbCommand
cmd.commandtext = [Ô]Select max(codigo) + 1 from cliente[Ô]
cmd.connection = FbConnection [ô]já previamente conectado
dim rs as FbDataReader = cmd.ExecuteReader
messagebox.show rs.GetInt32(0)
Você deve modificar o modo de pensar nas soluções, só isso...
KERPLUNK, ai sim !!!! era exatamente o que eu precisava, vc disse tudo, mudar o jeito de pensar na solução.
Só mais uma coisa, se eu faço assim:
dim cmd as new FbCommand
cmd.commandtext = [Ô]Select max(codigo) + 1 from cliente[Ô]
cmd.connection = FbConnection [ô]já previamente conectado
dim rs as FbDataReader = cmd.ExecuteReader
messagebox.show rs.GetInt32(0)
Vai dar uma mensagem There no data to read
Se eu coloco: rs.read() antes de messagebox.show rs.GetInt32(0), ai dá certo.
é assim mesmo ?
Só mais uma coisa, se eu faço assim:
dim cmd as new FbCommand
cmd.commandtext = [Ô]Select max(codigo) + 1 from cliente[Ô]
cmd.connection = FbConnection [ô]já previamente conectado
dim rs as FbDataReader = cmd.ExecuteReader
messagebox.show rs.GetInt32(0)
Vai dar uma mensagem There no data to read
Se eu coloco: rs.read() antes de messagebox.show rs.GetInt32(0), ai dá certo.
é assim mesmo ?
dim cmd as new FbCommand
cmd.commandtext = [Ô]Select max(codigo) + 1 from cliente[Ô]
cmd.connection = FbConnection [ô]já previamente conectado
dim rs as FbDataReader = cmd.ExecuteReader
if rs.HasRows then
rs.Read()
messagebox.show rs.GetInt32(0)
end if
cmd.commandtext = [Ô]Select max(codigo) + 1 from cliente[Ô]
cmd.connection = FbConnection [ô]já previamente conectado
dim rs as FbDataReader = cmd.ExecuteReader
if rs.HasRows then
rs.Read()
messagebox.show rs.GetInt32(0)
end if
O DataReader, é readOnly e forwardOnly, ou seja, só se avança nos registros e somente leitura. Para ler o próximo registro na sequencia, use o método Read() do mesmo. Então você pode perguntar: Mas e se eu quiser um modo de leitura onde avanço e retrocedo como quiser, mas usando um datareader? Usando o DataReader propriamente não tem como, mas, você pode usar a orientação a objeto para isso, leia o datareader um a um, preenchendo uma lista de objetos e navegue nesta lista de objetos e não no datareader. O truque é: conectar e ler tudo que preciso apenas uma vez, ir ao banco de dados o mÃnimo possÃvel.
Valew KERPLUNK !
Salvou minha vida mais uma vez ! Muito Obrigado ...
Salvou minha vida mais uma vez ! Muito Obrigado ...
Tópico encerrado , respostas não são mais permitidas