none
Ayuda con conexión de libreoffice base a C#.net Visual Studio 2019 RRS feed

  • Pregunta

  • Hola. Soy nuevo en la programación, pero me interesa mucho, he decidido iniciarme con Visual Studio 2019 y el lenguaje C#, como gestor de base de datos decidi usar libreoffice base pero no puedo conectar LibO base a C#. He buscado información y lo más cercano a lo que busco es un código en Visual Basic pero no se como traducirlo a C#.

    Este es el código que encontré: 

    Imports System.Data
    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
    
            Dim oServiceManager As Object = CreateObject("com.sun.star.ServiceManager")
            Dim sBaseFile As String = "c:\prueba.odb"
    
            'Proceso de conexión
            Dim oBaseContext = oServiceManager.CreateInstance("com.sun.star.sdb.DatabaseContext")
    
            Dim oDataSource = oBaseContext.getByName(sBaseFile) 'AQUI ME DA EL ERROR
            Dim oConnection = oDataSource.getConnection("", "")
    
            Dim oStatement As Object = oConnection.CreateStatement()
    
            Dim oResultSet = oStatement.executeQuery("SELECT * FROM Oficiales") 'Una tabla que tengo en la bd
    
            Dim Ometa As Object = oResultSet.getMetaData()
            Dim fieldsCount As Integer = CInt(Ometa.getColumnCount())
    
    
            'La transferencia del nombre de la columna a la DataTable de ADO.NET
            Dim TBL As New DataTable()
    
            For colIndex As Integer = 1 To fieldsCount
                TBL.Columns.Add(CStr(Ometa.getColumnName(colIndex)))
            Next
    
    
            While (oResultSet.Next())
                Dim newRow As DataRow = TBL.NewRow()
                For colIndex As Integer = 1 To fieldsCount
                    newRow(colIndex - 1) = CStr(oResultSet.getString(colIndex))
                Next
                TBL.Rows.Add(newRow)
            End While
    
            'Muestra los datos recuperados a DataGridView
            DataGridView1.DataSource = TBL
    
            End
        End Sub
    End Class

    Y este es el error que me salta cuando intento conectar a la base de datos con extensión odb:

    //System.Data.Odbc.OdbcException: 'ERROR [IM002] [Microsoft][Administrador de controladores

    //ODBC] No se encuentra el nombre del origen de datos y no se especificó ningún controlador

    //predeterminado'

    ¿Pueden ayudarme? Todavía no se mucho de programación. Gracias

    domingo, 15 de noviembre de 2020 14:23

Respuestas

  • Hola Stalin Romano,

    Como bien mencionas, LibreOffice Base es un gestor de bases de datos, es decir es simplemente un front-end o interfaz que sirve como intermediario para que tú, el usuario, y la base de datos puedan interactuar. Te lo menciono porque dices que eres principiante, disculpa si ya lo sabías, pero si no, debes entender que la base de datos y LibreOffice Base son cuestiones aparte. Ahora acá viene lo importante de lo anterior: desde tu programa de c#, tendría más sentido que te conectes a la base de datos no a la interfaz de front-end (por eso es que no encuentras mucha información al respecto). A á te dejo 3 documentos que hablan de como conectar c# a una open database (.odb):

    * Enlace1

    * Enlace2

    * Enlace3

    Espero que te sea de ayuda. Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice “Marcar como Respuesta”). Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    lunes, 16 de noviembre de 2020 16:11

Todas las respuestas

  • Hola Stalin Romano,

    Como bien mencionas, LibreOffice Base es un gestor de bases de datos, es decir es simplemente un front-end o interfaz que sirve como intermediario para que tú, el usuario, y la base de datos puedan interactuar. Te lo menciono porque dices que eres principiante, disculpa si ya lo sabías, pero si no, debes entender que la base de datos y LibreOffice Base son cuestiones aparte. Ahora acá viene lo importante de lo anterior: desde tu programa de c#, tendría más sentido que te conectes a la base de datos no a la interfaz de front-end (por eso es que no encuentras mucha información al respecto). A á te dejo 3 documentos que hablan de como conectar c# a una open database (.odb):

    * Enlace1

    * Enlace2

    * Enlace3

    Espero que te sea de ayuda. Por favor no olvides marcar una respuesta si resolviste tu consulta (debajo de cada post hay una opción que dice “Marcar como Respuesta”). Quedo pendiente de cualquier actualización. Gracias por levantar tu consulta en los foros de msdn.

     

    Saludos cordiales

    Gabriel Castro

     ____________________________ 

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    lunes, 16 de noviembre de 2020 16:11
  • Hola. Muchas gracias por tan valiosa información que ha compartido, gracias a esta me he acercado un poco más a la respuesta y es el motor (no se si es el nombre correcto) es HSQLDB, la marcaré como la respuesta para que quede asentada para alguien que busque algo similar. Gracias 
    martes, 17 de noviembre de 2020 18:33