Foros del Web » Programación para mayores de 30 ;) » .NET »

.net2005+oracle: ExecuteReader error

Estas en el tema de .net2005+oracle: ExecuteReader error en el foro de .NET en Foros del Web. Desde un formulario en vb.net, estoy tratando de rescatar un campo desde un sp que está en oracle. El código que tengo es el siguiente: ...
  #1 (permalink)  
Antiguo 20/12/2013, 13:04
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Pregunta .net2005+oracle: ExecuteReader error

Desde un formulario en vb.net, estoy tratando de rescatar un campo desde un sp que está en oracle. El código que tengo es el siguiente:

I
Código SQL:
Ver original
  1. Imports System.DATA.OleDb
  2. ...
  3.  
  4. Dim oraConn AS String = "Provider=MSDAORA; Data Source=(DESCRIPTION=" _
  5.            + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=99.99.99.99)(PORT=9999)))" _
  6.            + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _
  7.            + "User Id=XXXXXX;Password=XXXXXX;"
  8.  
  9.             Dim conn AS NEW OleDb.OleDbConnection(oraConn)
  10.  
  11.             Dim SQL AS String = "SpGestionLeerXRutFecha '" & cRut & "'"
  12.             Dim cmd AS NEW Imports System.DATA.OleDb
  13.  
  14. OleDb.OleDbCommand(SQL, conn)
  15.             cmd.CommandType = CommandType.Text
  16.  
  17.             Dim dr AS OleDb.OleDbDataReader = cmd.ExecuteReader() ' Visual Basic
  18.            dr.Read()
  19.  
  20.            MsgBox(dr.Item("NTIDGES"))
  21.  
  22.            conn.Close()
  23.            conn.Dispose()

Pero me arroja el siguiente error:
Error: ExecuteReader requiere de una conexion abierta y disponible. El estado actual de la conexion es cerrada


Que puede ser?????????
  #2 (permalink)  
Antiguo 20/12/2013, 13:07
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: .net2005+oracle: ExecuteReader error

Cita:
Iniciado por pcarvajal Ver Mensaje
Desde un formulario en vb.net, estoy tratando de rescatar un campo desde un sp que está en oracle. El código que tengo es el siguiente:

Código vb:
Ver original
  1. Imports System.Data.OleDb
  2. ...
  3.  
  4. Dim oraConn As String = "Provider=MSDAORA; Data Source=(DESCRIPTION=" _
  5.            + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=99.99.99.99)(PORT=9999)))" _
  6.            + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _
  7.            + "User Id=XXXXXX;Password=XXXXXX;"
  8.  
  9.             Dim conn As New OleDb.OleDbConnection(oraConn)
  10.  
  11.             Dim sql As String = "SpGestionLeerXRutFecha '" & cRut & "'"
  12.             Dim cmd As New Imports System.Data.OleDb
  13.  
  14. OleDb.OleDbCommand(sql, conn)
  15.             cmd.CommandType = CommandType.Text
  16.  
  17.             Dim dr As OleDb.OleDbDataReader = cmd.ExecuteReader() ' Visual Basic
  18.            dr.Read()
  19.  
  20.             MsgBox(dr.Item("NTIDGES"))
  21.  
  22.             conn.Close()
  23.             conn.Dispose()
Pero me arroja el siguiente error:
Error: ExecuteReader requiere de una conexion abierta y disponible. El estado actual de la conexion es cerrada


Que puede ser?????????
Y seré curioso... ¿Donde está el "conn.Open()"?... Porque yo no lo veo.

No es lo mismo crear una conexión que abrir una.


Otra cosa: ¿Por qué usas el System.Data.Ole, y no el Oracle Data Provider for .Net, que además de nativo es más potente, y con mucha documentación?

Me parece que estás desperdiciando esfuerzo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 20/12/2013, 14:00
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: .net2005+oracle: ExecuteReader error

pues la verdad gnzsoloyo es porque soy neofito en Oracle con .Net y estoy dando palos de ciego...

mantuve la libreria que estoy mencionando (si, si sé que no es lo correcto, pero debo al menos mostrar un avance)

ahora me funciona, pero el select que puse en duro está contenido en un sp, mi pregunta es:
como llamo al sp y como le paso los parametros????

adjunto codigo actualizado:

Código SQL:
Ver original
  1. Dim oraConn AS String = "Provider=MSDAORA; Data Source=(DESCRIPTION=" _
  2.            + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=99.99.99.99)(PORT=9999)))" _
  3.            + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _
  4.            + "User Id=XXXXXX;Password=XXXXXX;"
  5.  
  6.             Dim conn AS NEW OleDb.OleDbConnection(oraConn)
  7.             conn.OPEN()
  8.  
  9. 'la siguiente consulta es la que hay que cambiar ya que esta contenida dentro de un sp
  10. Dim sql As String = "SELECT NTIDGES FROM rsfo.RNOTAGES WHERE NTLOTE = '" & cRut & "'"
  11. --aqui deberia ir el sp "SpGestionLeerXRutFecha" y el parametro "cRut"
  12.            Dim cmd As New OleDb.OleDbCommand(sql, conn)
  13.            cmd.CommandType = CommandType.Text
  14.  
  15.            Dim dr As OleDb.OleDbDataReader = cmd.ExecuteReader() ' Visual Basic
  16.             dr.READ()
  17.  
  18.             MsgBox(dr.Item("NTIDGES"))
  19.  
  20.             conn.Close()
  21.             conn.Dispose()

Última edición por pcarvajal; 20/12/2013 a las 14:19

Etiquetas: formulario, net, sql, vb, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:13.