elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Duditas sobre Conexión SQL (ADODB)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duditas sobre Conexión SQL (ADODB)  (Leído 2,105 veces)
Shadow

Desconectado Desconectado

Mensajes: 246


Superarse sin ser Superado


Ver Perfil
Duditas sobre Conexión SQL (ADODB)
« en: 10 Noviembre 2011, 11:40 am »

Hola Gente!;
Tengo unas dudas con respecto a una conexión segura, segura en el sentido que solo quiero hacer una lectura de datos, y que en caso de un error no escriba nada o que pase algo raro.  :S


DECLARO LAS VARIABLES.

Dim Cn As New ADODB.Connection
Dim rst As New ADODB.Recordset


ME CONECTO:

Cn.Open "provider=sqloledb.1;Server=mssql.yo;User ID=webtests;Password=1234;Persist Security Info=True;Database=inv"


1.- De esta forma solo me conectaría y leería?

rst.Open "Select * From PC", Cn, adOpenDynamic, adLockReadOnly 



2.- en caso de querer agregarle un Where para filtrar datos... como debería ser asi?:


rst.Open "Select * From PC  Where 'empresa' = "Intel", Cn, adOpenDynamic, adLockReadOnly 


3.- Podría pasar algo malo si no cierro un recordset?


Gracias de antemano.




En línea

Sh@doW
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Duditas sobre Conexión SQL (ADODB)
« Respuesta #1 en: 10 Noviembre 2011, 15:59 pm »

primero no declares las variables nunca como "As New", primero hacele el As y despues el Set variable = New objeto

esto esta mal

Código
  1. rst.Open "Select * From PC  Where 'empresa' = "Intel", Cn, adOpenDynamic, adLockReadOnly

deberia ser:

Código
  1. rst.Open "Select * From PC Where empresa ='Intel'", Cn, adOpenDynamic, adLockReadOnly  

leete un manual de SQL siempre viene bien.

y no cerrar un recordset no es malo, pero si despues lo abris de nuevo debes cerrarlo antes de abrirlo (pero solo si esta abierto antes), para eso podes usar la propiedad .State del recordset, para saber si esta abierto o cerrado.

saludos.


En línea

Shadow

Desconectado Desconectado

Mensajes: 246


Superarse sin ser Superado


Ver Perfil
Re: Duditas sobre Conexión SQL (ADODB)
« Respuesta #2 en: 11 Noviembre 2011, 09:58 am »

Gracias seba123neo!

Si después de postear me puse a leer algo, nunca le di pelota y ahora que me hace falta, pues recurrí a ustedes. ^^

Y puedo preguntar porque no debería Nunca declararlas como "As New"? No es óptimo?

un saludo y gracias nuevamente!
En línea

Sh@doW
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Duditas sobre Conexión SQL (ADODB)
« Respuesta #3 en: 11 Noviembre 2011, 10:02 am »

si ocupas

Set variable = New objeto

al final cuando ya no la uses

Set variable = Nothing

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
seba123neo
Moderador
***
Desconectado Desconectado

Mensajes: 3.621



Ver Perfil WWW
Re: Duditas sobre Conexión SQL (ADODB)
« Respuesta #4 en: 11 Noviembre 2011, 16:55 pm »

Y puedo preguntar porque no debería Nunca declararlas como "As New"? No es óptimo?

exacto no es optimo, mira una cita de la pagina de el guile que habla sobre esto, mejor explicado imposible:

Citar
Buenas normas de conducta con los objetos:

La forma que acabamos de ver de crear un objeto es la más recomendable. El porqué es que así sólo reservamos espacio real cuando vamos a usar el objeto. Me explico: Veamos otras formas de declarar/asignar variables de objetos:

Dim miNombre As Object
Set miNombre = New cNombre

Esta sería la forma de crear un objeto del que no sabemos que clase será. En nuestro caso, es un desperdicio de código (interno del VB) y recursos (no demasiados) que no es necesario. Cuando se usa una variable declarada As Object, el Visual Basic no sabe, hasta que se está ejecutando, de que clase será y reserva unas líneas (ocultas) de código para poder hacer su trabajo cuando esté ejecutándose el programa.


Dim miNombre As New cNombre

 
De esta forma, al mismo tiempo que declaramos la clase, le indicamos al VB que en cuanto ejecute el módulo en el que se encuentra la declaración, cree el objeto. Aunque ese objeto nunca se use, se creará en memoria y ahí estará hasta que se destruya... ¿Desperdicio de recursos? Más bien sí.

Pero tanto esta última forma como la primera, es la más rápida y menos consumidora de código interno y recursos o tiempo que el Visual necesita para crear objetos.

Esto es por la sencilla razón que ya le estamos indicando cómo va a ser ese objeto y por tanto él sabe cómo es y cuanto necesitará para albergarlo... por supuesto, esto sólo se puede hacer con objetos que actualmente hay en las referencias o en nuestro proyecto.

¿Qué método usar para declarar variables de objetos?

Si sabemos el tipo de antemano, usaremos el primer método:


Dim miNombre As cNombre

Cuando queramos usarlo, sólo debemos asignarlo mediante SET y ya estará disponible.

Habrá ocasiones, la mayoría, en que se necesite usar el NEW junto con la declaración, un caso es para usar colecciones, ya que no se comporta de igual forma. La razón de este "extraño" comportamiento, al menos en forma práctica, la teórica te la dejo a ti, para que profundices con los manuales del Visual Basic, es que al usarlo sin NEW sólo tenemos una copia "fija" de esa variable. Por otro lado, con NEW obtendremos una nueva copia después de destruir la copia anterior. Esto lo verás prácticamente en el código de ejemplo para probar todo esto.

otra cita de internet, que explica bien esto:

Citar
If you're working in VB classic (6.0), try not to declare your new object variables like this:

Dim obj As New Class

This is a slow way to program. Everywhere you use the variable obj, VB will check if it's already been instantiated or not. This slows down your program. Instead, declare the variable without the New keyword, and instantiate it separately in a sensible place.

Dim obj As Class
Set obj = New Class

You may find out that it did not make sense to go object-oriented. If this happens, just revert back to your original module. You did take a backup copy, didn't you?

saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Aclarandome 2 duditas seria feliz en VB6 [ENTREN] « 1 2 »
Programación Visual Basic
ignorantev1.1 12 2,362 Último mensaje 29 Noviembre 2008, 07:15 am
por cobein
ADODB y ACCESS [Filtrar] [SOLUCIONADO]
Programación Visual Basic
e500 3 2,143 Último mensaje 31 Julio 2010, 08:32 am
por e500
[VB6.0]ADODB cargar solo datos con valores
Programación Visual Basic
ŞCØRPIØN-X3 4 2,439 Último mensaje 9 Octubre 2011, 06:20 am
por ŞCØRPIØN-X3
Comparadores logicos en PHP con ADOdb
PHP
CodeSoBizarre 0 1,057 Último mensaje 12 Septiembre 2017, 19:50 pm
por CodeSoBizarre
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines