MANIPULA?ÃO B?SICA DE DADOS.

FUTURA 02/12/2017 23:44:08
#478220
Pessoal, para fazer consultas com datareader, a sequência abaixo esta correta ? ( em um módulo tenho a conexão com o BD, e alguns datareader e sqlcommand declarados), a dúvida é se posso deixar declarados no módulo, e ir abrindo e fechando nas demais telas, e se o modo de fechar esta correto, usando o dispose só na cnn, no datareader, apenas close. é isso mesmo ?, não tem risco de prender tabelas no banco ?

abre_conexão
Sql = [Ô]select codigo,razao,cgc,loc,certserial,ambiente from empresas where codigo=[Ô] & CDbl(Mid(Me.cmbempresas.Text, 1, 2)) & [Ô] [Ô]
Sqlcmd = New SqlCommand(Sql, Cnn)
Dremp = Sqlcmd.ExecuteReader
....
.....
Dremp.close
Cnn.close
cnn.dispose

outro exemplo. Com executenonquery() não tenho disponível o close, estou usando o dispose, é isso mesmo ?

abre_conexão
Sqlcmd3 = New SqlCommand([Ô]update envio set st_env=[ô]2[ô] where idenv = [ô][Ô] & wscodenv & [Ô][ô][Ô], Cnn)
Sqlcmd3.ExecuteNonQuery()
sqlcmd3.dispose
Cnn.close
cnn.dispose


JABA 03/12/2017 14:50:21
#478231
Resposta escolhida
KERPLUNK 03/12/2017 22:40:42
#478233
Além da dica do JABA, use comandos parametrizados e não concatenação.
FUTURA 04/12/2017 07:37:43
#478240
OK, só não estou usando o using, mas abro a conexão e fecho a cada acesso a dados. Fiquei em dúvida porque em algum ponto, ficou prendendo o banco. Este app compartilha o banco sql server com um app de gestão em vb6, e no vb6 é que prendeu, não consegui fazer update em uma tabela, somente após sair do app em vb.net. Pelo que entendi, o datareader é só leitura né ?, talvez algum executenonquery() tenha prendido. Mas ja estou revisando.
KERPLUNK 04/12/2017 09:17:59
#478244
Se usar os blocos using para todos os objetos descartáveis, você não terá mais esse problema de [Ô]trancar[Ô]. O que tranca, não é a aplicação mas sim o GAC
FUTURA 04/12/2017 09:42:37
#478246
Não sei o que é o GAC, vou pesquisar sobre, e já estou readequando o using.
Muito obrigado...
KERPLUNK 04/12/2017 10:13:43
#478247
Não esqueça de parametrizar as queries também. Concatenação de valores é uma falha catastrófica.
Tópico encerrado , respostas não são mais permitidas