Susana
|
ANGRA DOS REIS RJ - BRASIL
|
|
Postada em 24/05/2005 16:22 hs
Tenho a seguinte conexão com o Banco de Dados: Conexao As new ADODB.Connection Conexao.open .........(OLEDB ou ODBC ou ...) Para realizar uma atualização (inserir ou alterar um registro) normalmente faço assim: Exemplo: 1) conexao.execute "UPDATE Tabela SET Nome = 'Maria' WHERE CPF = '123'" Porém muitas pessoas programam assim: 2) Dim CmdNom As New ADODB.Command Set CmdNom.ActiveConnection = conexao CmdNom.CommandText = "UPDATE Tabela set Nome = ? Where CPF = '123'" CmdNom.Parameters.Append .CreateParameter("Nome", adVarChar, adParamInput, 30) CmdNom.Parameters("Nome") = "Maria" CmdNom.execute No INSERT segue mais ou menos a mesma linha de programação. Qual é a vantagem de usar a segunda opção, que exige mais codificação? performance, segurança, ??? Gostaria muito de esclarecer esta dúvida.
|
|
|
|
|
|
|
|
Postada em 24/05/2005 17:41 hs
Olá Susana, não há vantagem alguma, acontece que algumas pessoas simplesmente copiam códigos de tutoriais que ensinam a utilizar os objetos Command, que podem executar praticamente qualquer ação, desde selecionar registros até executar inserções, atualizações e até apagar registros. O uso de objetos Command só se justifica para executar Store Procedures em BD cliente/servior, como o Oracle ou SQL Server. Eu também programo como você dando uma ordem diretamente à conexão sem o uso de objetos Command. Algumas pessoas também usam objetos Command para recuperar registros com Select, ignorando o fato do ADO possuir o objeto Recordset assim como a ADO. Aliás, o Recordset é mais rápido e econômico em termos de memória utilizada para se selecionar registros que o Command. Resumindo, continue programando da forma como está, além de não causar problema algum, é mais rápido e evita desperdício de memória. um abraço, Sandro.
|
|
|
|
|
|
Postada em 25/05/2005 17:42 hs
Suzana, minha opiniao é a mesma do Sandro... só quero acrescentar algo: o uso do SQL diretamente (INSERT, UPDATE, SELECT, DELETE) é cerca de 5 vezes mais rapido q o uso de Commands e Parameters, e alem do mais é bem mais rapido pra programar e dar manutenção... Sandro, uma correção: tambem dá pra disparar SPs no SQL-Server ou em qq outro SGBD usando o SQL diretamente... os objetos command e parameter sao uma herança do RDS que nao permitia o uso do SQL nativo... só sao mantidos por compatibilidade de sistemas antigos e programadores q nao se adaptaram... Qto a segurança, o Command da uma garantia de encapsulamento de informaçoes na rede, mas se vc pensar q nao vai enviar comandos pela internet, nao há necessidade disso... e se fosse na internet, nao iria ajudar muito... tem formas melhores de garantir segurança...
Elieser Carlos Topassi Analista de Sistemas - Desenvolvedor VB/ASP/.Net
e-mail/msn: elieser_topassi@yahoo.com.br
São José do Rio Preto,SP - Brasil _____________________________________________________
"O caminho do tolo aos seus prórios olhos lhe parece reto, mas o sábio ouve conselhos" (Pv 12:15)
|
|
|
|
|