none
conexión a oracle RRS feed

  • Pregunta

  • Buenas tardes.

    Estoy intentando conectar a una base de datos de Oracle para darle mantenimiento desde una aplicación windows Desktop.

    A través de un dataset ya lo he conseguido pero el problema es que después, cuando ejecuto el programa en otro ordenador, me dice el ya conocido mensaje de que no está instalado el cliente oracle.

    Se supone que utilizando Oracle.DataAccess.Client ya no debería pedirme el cliente.

    La cadena de conexión a oracle está probada y funciona.

    Este código que voy a poner, ya lo he utilizado antes pero para una conexión a SQL Server.

    El resultado actual es vacío, muestra el datagridview vacío.

    Estoy utilizando VS Comunity 2017 y Oracle.DataAccess para Framework 4

    Muchas gracias por la ayuda que me puedan dar.

    Siguiendo las instrucciones de Build a .NET Application on the Oracle Database with Microsoft Visual Studio 2010 lo he modificado para adecuarlo a oracle:

    Imports Oracle.DataAccess.Client

    Public Class Form1
        Dim OraDb As String
        Dim strSQL As String

        Dim ds As New DataSet

        Dim cnORA As OracleConnection
        Dim da As OracleDataAdapter

        Dim BS As New BindingSource

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

            OraDb = "Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = Servidor)(PORT = 1531)))(CONNECT_DATA = (SID = SRVID)));Persist Security Info=True;User ID=USUARIO;Password=PASS;Unicode=True"

            cnORA = New OracleConnection(OraDb)
            cnORA.Open()

            strSQL = "SELECT * FROM TABLA"
            da = New OracleDataAdapter(strSQL, OraDb)
            da.Fill(ds, "TABLA")

            BS.DataSource = ds
            BS.DataMember = "TABLA"

            Me.DGV.DataSource = BS

        End Sub

    End Class


    martes, 13 de junio de 2017 16:24

Todas las respuestas

  • Saludos:

    En la pagina que mencionas dice claramente que debes instalar un software para el cliente:

    .NET Data Provider

    In addition tobasic Oracle client connectivity software, .NET applications require the use of what is known as a managed data provider

    Link:

    http://www.oracle.com/technetwork/articles/dotnet/vs2010-oracle-dev-410461.html

    Asi que bajalo e instalalo en el cliente y funcionara.

    Espero ayude.

    JOSE LUIS


    Dios NO los llamo LAS DIEZ RECOMENDACIONES

    martes, 13 de junio de 2017 16:31
  • Gracias por tu respuesta José Luis.

    Estoy ejecutando el programa en mi máquina de desarrollo y está instalado el cliente.

    Y me parece que el managed data provider al que se refieren es Oracle.DataAccess.dll, que la tengo referenciada.

    Otra cosa es que posteriormente quiero que el programa se ejecute en otro ordenador sin necesidad de instalarle el cliente de oracle.

    Ya he visto en otra pregunta que alguien lo ha conseguido copiando unas dlls, pero el directorio que indican es de un Cliente oracle 11g y yo tengo el 12g y no encuentro la ruta que indican para las dlls.

    Gracias nuevamente.


    • Editado FPLS martes, 13 de junio de 2017 16:40
    martes, 13 de junio de 2017 16:37
  • Hola @FPLS

    Y me parece que el managed data provider al que se refieren es Oracle.DataAccess.dll, que la tengo referenciada.

    Otra cosa es que posteriormente quiero que el programa se ejecute en otro ordenador sin necesidad de instalarle el cliente de oracle.

    Si creas una carpeta a nivel de solución con el nombre Lib y ahí alojas la dll y cuando haces la referencia lo haces desde esa ruta. Así no tendrías problemas desde cualquier cliente que instales la aplicación.

    Espero la información brindada sea de utilidad.

    Saludos


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú



    miércoles, 14 de junio de 2017 2:31
  • Buenos días Pedro,

    Gracias por la respuesta.

    Al compilar la solución, las dlls referenciadas siempre se copian junto con el ensamblado; ese no es el problema.

    Lo que realmente deseo hacer es que al instalar el programa en un ordenador, no tenga necesidad de instalar el cliente oracle.

    Gracias.

    miércoles, 14 de junio de 2017 8:34
  • Buenos días.

    Me respondo a mi mismo.

    Gracias a todos por la colaboración.

    Ya he podido conectar a la base de datos de oracle sin instalar el cliente.

    Continué mirando las instrucciones de Build a .NET Application on the Oracle Database with Microsoft Visual Studio 2010 y conseguí hacer la conexión en mi máquina de desarrollo, al pasarlo a la máquina de producción, ya no me dio el error de cliente oracle sino me dio otro indicando que faltaba la dll OraOps12.dll, copié la dll a la carpeta del programa y continuó dando el error, la solución la encontré en este mismo foro.

    En algun post un usuario indicó que había que copiar unas dlls a la carpeta de la aplicación, pero nunca dijo que dlls eran las que había que copiar.

    Las dlls que hay que copiar son las siguientes:

    • msvcr71.dll
    • oci.dll
    • Oracle.DataAccess.dll (Esta se copia sola porqué está referenciada en el proyecto)
    • Oraociei12.dll
    • oraons.dll
    • OraOps12.dll

    Este es el enlace al post donde encontré las dlls necesarias:

    https://social.msdn.microsoft.com/Forums/es-ES/d96a3d7f-0988-475b-8643-89c92a968675/conectar-con-oracledataacces-sin-instalar-odac?forum=vcses&prof=required

    Gracias nuevamente a todos y saludos

    miércoles, 14 de junio de 2017 11:51
  • EN QUE DIRECTORIA HAY QUE COPIAR LAS DLL?

    miércoles, 21 de marzo de 2018 0:55