Visual Basic.NET - Error en la conexión

   
Vista:

Error en la conexión

Publicado por Pinky (104 intervenciones) el 09/12/2009 14:46:48
Hola amigos del foro, me refiero al problema que tengo en el llamado a la base de datos, he hecho de todo pero nada me funciona, además hago mención que me encuentro trabajando en Visual Studio 2008 en Web delveloper y que recién estoy empezando en Visual basic.net, a continuación muestro el codigo que estoy utilizando.
Imports System.Data
Imports System.Data.SqlClient
Imports System.Xml

Partial Class Default2
Inherits System.Web.UI.Page
Private Conexion As String = "server=.;uid=sa;password=VisualBasic;database=Sistema"
Private strSQL As String = "SELECT * FROM Usuarios WHERE Nombre_Usuario = '" + CMBUSUARIO.Text + "'"
Private MiConexion As New SqlConnection(Conexion)
Private resultado As SqlDataReader
Private Contador As Long = 0
Private Posicion As Long = 0

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Dim Comando As SqlCommand
'Comando = New SqlCommand(strSQL, MiConexion)
MiConexion.Open()
Dim sql As New SqlClient.SqlCommand("Select * From Usuarios Where Nombre_Usuario = '" + CMBUSUARIO.Text + "'", MiConexion)
Dim resultado As SqlClient.SqlDataReader
Try
resultado = sql.ExecuteReader()
Catch ex As Exception
MsgBox("error")
Exit Sub
End Try
If resultado.HasRows Then
Do While resultado.Read()
CMBUSUARIO.Items.Add(resultado.Item("Nombre_Usuario"))
Loop
Else
CMBUSUARIO.Text = "Usuarios"
CMBUSUARIO.Focus()
End If
resultado.Close()
End Sub

y el error que me marca esta en la linea del llamado a la tabla más precisamente en Nombre_usuario, que menciona "Utilice la palabra clave "New" para crear una instancia de objeto, lo otro que dice "Determine si el objeto es null antes de llamar ala método"
El otro error que me aparece esta en la linea Miconexion.open, dice que esta no es usuario no existe o el usuario fallo.

Favor de ayudarme amigos ya no se que hacer, desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Error en la conexión

Publicado por Damian (3 intervenciones) el 09/12/2009 16:13:59
Buenos días Pinky, la verdad es que no está muy claro tu código, pero lo primero que tendrías que ver es que estas poniendo en una clase de forma privada el objeto conexión y luego haces una llamada desde el procedimiento de carga de la pagina, el objeto debe ser visible en el procedimiento para que puedas realizar la conexión.

Corrige eso y luego me dices.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en la conexión

Publicado por Pinky (104 intervenciones) el 09/12/2009 16:51:44
Damian muchas gracias por tu ayuda, pero la duda que me asalta es que debo declararlas todas en Dim o Public, y hay te comento como me resulta la conexion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en la conexión

Publicado por Damian (3 intervenciones) el 09/12/2009 18:35:08
Si declaras DIM o Private (en las clases) estas indicando que el alcance de dicha variable o objeto es solo visible en ese procedimiento o clase (si declaras una variable dentro de un ciclo, la misma solo estara visible dentro del siclo)
en cambio si la declaras como Public, la variable sera visible desde cualquier parte del codigo, por ejemplo si crearas una clase llamada "miConexion" y detro instanciaras una coneccion publicamente,

Public Class miConexion
Public conet As New SqlClient.SqlConnection

'resto del codigo

End Class

luego podrias verla desde el load de la pagina

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim miObjetoConexion As New miConexion
miObjetoConexion.conet()
End Sub

Espero que esto te ayude a entender cuando usar cada declaracion de alcance.

Toma en cuenta que el .NET ademas tiene un recolector de basura similar al de JAVA , con lo que si declaras muchas variables como publicas el programa podria hacerce mas lento ya que no se leveraria la memoria tan rapidamente como seria recomendable.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Error en la conexión

Publicado por Pinky (104 intervenciones) el 10/12/2009 01:05:33
Damian buenas noches, realice los cambios que me dijiste, pero ahopra me manda un nuevo error, de todas maneras te muestro el codigo nuevamente:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Xml

Partial Class Default2
Inherits System.Web.UI.Page
Public Conexion As String = "server=.;uid=sa;password=VisualBasic;database=Sistema"
'Public strSQL As String = "SELECT * FROM Usuarios WHERE Nombre_Usuario = '" + CMBUSUARIO.Text + "'"
Public MiConexion As New SqlConnection(Conexion)
Public resultado As SqlDataReader
Public Contador As Long = 0
Public Posicion As Long = 0

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'Dim Comando As SqlCommand
'Comando = New SqlCommand(strSQL, MiConexion)
'MiConexion.Open()
Dim sql As New SqlClient.SqlCommand("Select * From Usuarios Where Nombre_Usuario = '" + CMBUSUARIO.Text + "'", MiConexion)
Dim resultado As SqlClient.SqlDataReader
Try
resultado = sql.ExecuteReader()
Catch ex As Exception
MsgBox("error")
Exit Sub
End Try
If resultado.HasRows Then
Do While resultado.Read()
CMBUSUARIO.Items.Add(resultado.Item("Nombre_Usuario"))
Loop
Else
CMBUSUARIO.Text = "Usuarios"
CMBUSUARIO.Focus()
End If
resultado.Close()
End Sub

ahora el error que me manda es el siguiente en la linea Catch ex as expetion me doce que la conexión debe estar abierta o disponible, el estado actual esta cerrada, favor de ayudarme, desde ya muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar