Para cargar los datos de una tabla en MySql en un control de un cuadro de diálogo uso este código.
Código: Seleccionar todo
sub conectarMySql
Dim oParms(2) As New "com.sun.star.beans.PropertyValue"
Dim oCon as Object
Dim oDlg As Object
Dim oDlgModel As Object
oManager = CreateUnoService("com.sun.star.sdbc.DriverManager")
sURL = "sdbc:mysqlc:://localhost:3306/base_elementos"
oParms(0).Name = "user"
oParms(0).Value = "root"
oParms(1).Name = "password"
oParms(1).Value = "21525406"
oParms(2).Name = "JavaDriverClass"
oParms(2).Value = "com.mysql.jdbc.Driver"
oCon = oManager.getConnectionWithInfo(sURL, oParms())
oMeta = oCon.getMetaData()
connMeta = oMeta.getConnection().getMetaData()
'print connMeta.URL
'print connMeta.UserName
oStatement = oCon.createStatement() 'Create an SQL statement object
sSQL = "SELECT COUNT(*) FROM base_elementos.elementos" 'Obtengo la cantidad de registros de la tabla elementos
oResultSet = oStatement.executeQuery(sSQL)
While oResultSet.next
Registros = CInt(oResultSet.getString(1)) ' ID Max
Wend
dim Dato(Registros) 'Matriz para guardar los datos de la consulta
sSQL= "SELECT numero FROM base_elementos.elementos WHERE `id_numero` = 1" ' Selecciono la columna numero de la tabla elementos
oResultSet = oStatement.executeQuery(sSQL)
oResultSet.next
Dato(0) = oResultSet.getString(1) 'Cargo el primer dato del registro de la tabla
for i = 2 to Registros
sSQL= "SELECT numero FROM base_elementos.elementos WHERE `id_numero` = " & i & "" ' Selecciono la columna numero de la tabla elementos
oResultSet = oStatement.executeQuery(sSQL)
oResultSet.next
Dato(i-1) = oResultSet.getString(1) 'Cargo el resto de los datos de la tabla
next
DialogLibraries.LoadLibrary("Standard")
oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
oDlgModel = oDlg.Model
with oDlgModel
.PositionX = 100
.PositionY = 10
.Width = 170
.Height = 120
.Title = "Consulta SQL"
End with
ListBoxData = oDlg.getcontrol("ListBox1")
ListBoxData.addItems(Dato(), 0)
oDlg.Execute()
oCon.close()
end sub
Lo que quiero saber es si hay alguna forma más óptima de cargar los datos devueltos en el control. Dado de de esta forma no me parece muy optimo.
Código: Seleccionar todo
oResultSet = oStatement.executeQuery(sSQL)
oResultSet.next
Dato(i-1) = oResultSet.getString(1)
Hay alguna forma mas sencilla de hacer esto?
Desde ya muchas gracias.
Saludos