Spanish problema con mysql

alextdr

Member
Licensed User
Buenas! Estoy desarrollando una aplicacion en la que me tengo que conectar con una base de datos externa mysql (estoy utilizando wamp). He conseguido insertar usuarios con el siguiente codigo:
B4X:
Sub Process_Globals
Dim hc As HttpClient
End Sub

Sub Globals
Dim EditText1, EditText2, EditText3, EditText4 As EditText
Public ID, nombre, poblacion, datos, capital As String
Dim ListView1 As ListView
Dim button1, button2 As Button

End Sub

Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
hc.Initialize("hc")
End If
Activity.LoadLayout("layout") ' Cargamos el Designer
End Sub

Sub Activity_Resume


End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub

Sub Button1_Click
ID = EditText1.Text
nombre = EditText2.Text
poblacion = EditText3.Text


Dim req As HttpRequest
Dim Query As String


Query="INSERT INTO paises (ID, nombre, poblacion) VALUES ('" & ID & "','" & nombre & "','" & poblacion & "')"
req.InitializePost2("http://192.168.1.41/paises.php", Query.GetBytes("UTF8"))
hc.Execute(req, 1)


End Sub

Sub button2_Click
capital = EditText4.Text

Dim req As HttpRequest
Dim Query As String

Query =  "INSERT INTO informacion (ID, capital) VALUES ('" & ID & "','" & capital & "')"
req.InitializePost2("http://192.168.1.41/paises.php", Query.GetBytes("UTF8"))
hc.Execute(req, 1)
  
  
End Sub


Sub hc_ResponseSuccess (Response As HttpResponse, tarea As Int)
Dim resultString As String
resultString = Response.GetString("UTF8")

Msgbox("Los datos han sido almacenados", "Éxito de operación")

End Sub

Sub hc_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, tarea As Int)
Log("Error: " & Reason & ", StatusCode: " & StatusCode)
If Response <> Null Then
Log(Response.GetString("UTF8"))
Response.Release
End If
End Sub

Esa parte me funciona, pero ahora me he quedado atascado, estoy intentando leer los datos que hay en la base de datos y mostrarlos en una lista. Siguiendo un codigo extraido de un tutorial no me funciona:

B4X:
Sub Process_Globals
Dim hc As HttpClient
Dim paises, poblacion As Int
paises = 1    ' Es la tarea 1

End Sub

Sub Globals

Type Renglones (Renglon1 As String, Renglon2 As String)
Dim Label1, Label2 As Label
Dim ListView1 As ListView
End Sub

Sub Activity_Create(FirstTime As Boolean)
If FirstTime Then
hc.Initialize("hc")
End If
Activity.LoadLayout("1")
Buscar_lista_de_paises
End Sub

Sub Buscar_lista_de_paises
ProgressDialogShow("Buscando lista de países.")

Dim req As HttpRequest
Dim Query As String
Query="SELECT nombre, ID FROM paises ORDER BY ID"
req.InitializePost2("http://192.168.1.41/paises.php", Query.GetBytes("UTF8"))
hc.Execute(req, paises) '''''''' En ResponseSuccess hará el Case de paises
End Sub

' Esta es la Respuesta de la orden hc.Execute
Sub hc_ResponseSuccess (Response As HttpResponse, tarea As Int)
Dim res As String
res = Response.GetString("UTF8")
Log("Respuesta del servidor: " & res)
'res =  [{"nombre":"Argentina","id":"AR"},.... hasta ....,{"nombre":"Venezuela","id":"VE"}]
Dim parser As JSONParser
parser.Initialize(res)

Select tarea


Case paises
' Añade paises la ListView1
Dim countries As List
countries.Initialize
countries = parser.NextArray
For i = 0 To countries.Size - 1
Dim m As Map
m = countries.Get(i)
Dim Renglon As Renglones
Renglon.Renglon1 = m.Get("ID")      ' ES
Renglon.Renglon2 = m.Get("nombre")  ' España
ListView1.AddTwoLines2(Renglon.Renglon1, Renglon.Renglon2, Renglon)
Next
ProgressDialogHide

End Select
Response.Release
End Sub


Sub hc_ResponseError (Response As HttpResponse, Reason As String, StatusCode As Int, tarea As Int)
Log("Error: " & Reason & ", StatusCode: " & StatusCode)
If Response <> Null Then
Log(Response.GetString("UTF8"))
Response.Release
End If
ProgressDialogHide
End Sub

El error que me salta en el log es el siguiente:

Error ocurred on line: 62 (Main)
java.lang.RuntimeException: JSON Array expected.

Pero unas lineas mas arriba, en el log, me sale la informacion que hay dentro de la base de datos de la siguiente manera:

[{"nombre":"espana","ID":"ES"},{"nombre":"francia","ID":"FR"}]

Por eso entiendo que el problema lo tengo a la hora de mostrar los datos, porque si que los recibo.

Podeis ayudarme a solucionar el error o decirme otras maneras de hacerlo? He buscado por el foro sobre este problema y sigo sin poder solucionarlo.

Gracias!
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

Parece que le estas pasando un Array en vez de un string, prueba a hacer esto y veras si sigue mal:

B4X:
Dim parser As JSONParser
res = res.SubString(2) ' o el que quieras ver
parser.Initialize(res)


Saludos
 

Descartex

Well-Known Member
Licensed User
Longtime User
Top