Spanish editar un registro sqlite

jluisruelas

Member
Licensed User
Longtime User
amigos como edito un registro de una base de datos? es una base sencilla de 6 filas y 3 columnas, que tengo que hacer para editar el registro de la fila 2 col 1 por ejemplo? es que no entiendo bien la instruccion
sql1.ExecNonQuery("UPDATE estados set estado ='"& texto)
 

Heppy

Active Member
Licensed User
Longtime User
Hola.
Para modificar una fila, tienes que tener algún campo que la identifique o saber la información que tienes almacenada.
Por ejemplo en este caso cambiaría el campo Estado por el texto siempre que el campo ID sea 2
B4X:
              SQLIns.ExecNonQuery("UPDATE estados set estado ='"& texto&" WHERE ID=2")

Otro por si no tienes un ID y queires utilizar otro campo
Esto te cambiará todos lo registros que tengan un campo Nombre y un Campo Apellido que coincidan con los valores de Nombre.Text y Apellido.Text
B4X:
              SQLIns.ExecNonQuery("UPDATE estados set estado ='"& texto&" WHERE Nombre="&Nombre.Text&" AND Apellido=&"Apellido.Text)

un saludo
 

jluisruelas

Member
Licensed User
Longtime User
Amigo gracias por tu reapuesta, he probado un codigo similar solo difiere del tuyo en eata parte "'WHERE ID= " & id la instruccion se ejecuta pero no actualiza el registro
 

Descartex

Well-Known Member
Licensed User
Longtime User
Buenas,
Si no se actualiza como te indica Heppy, entonces es que la condicion que le pones para que se actualice no se cumple...
Revisa el tipo de datos, no es lo mios poner "where id=0" que "where id='0'" si el campo es un entero o un text.

Un saludo.
 

jluisruelas

Member
Licensed User
Longtime User
Buenas,
Si no se actualiza como te indica Heppy, entonces es que la condicion que le pones para que se actualice no se cumple...
Revisa el tipo de datos, no es lo mios poner "where id=0" que "where id='0'" si el campo es un entero o un text.

Un saludo.
el campo id es un text amigo
 

Heppy

Active Member
Licensed User
Longtime User
Seguramente no haces la transacción.

B4X:
               If SQLIns.IsInitialized=False Then SQLIns.Initialize(File.DirRootExternal,"Mantepre/Mantepre.db",True)
              SQLIns.BeginTransaction
              SQLIns.ExecNonQuery("UPDATE Mantepre SET RECIBIDO=1")
              SQLIns.TransactionSuccessful
              SQLIns.EndTransaction
 

Descartex

Well-Known Member
Licensed User
Longtime User
Si es un text, pon la cadena de comparacion entre comillas simples, por ejemplo "where id='pepe'"
Un saludo.
 

jluisruelas

Member
Licensed User
Longtime User
descartex lo cambie como dijiste pero me marco error, pongo el codigo
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("lucendi_1_3")
bandera1=False
If File.Exists(File.DirInternal,"aparatos.sql") = False Then

File.Copy(File.DirAssets,"aparatos.sql",File.DirInternal,"aparatos.sql")
End If

If sql1.IsInitialized = False Then
sql1.Initialize(File.DirInternal, "aparatos.sql", False)
End If
imagen.Initialize(LoadBitmap(File.DirAssets,"boton sala.png"))
sld.Initialize
puntero.IsInitialized
puntero = sql1.ExecQuery("SELECT * FROM estados")
puntero.Position=1
sld.AddState(sld.State_Disabled,imagen)
End Sub

Sub Button1_Click
Dim estado, texto As String
puntero.Position=0 'el estado que quiero modificar esta en la primera fila con el id 1
estado=puntero.GetString("estado")
id="0"
If etado="off" Then
texto="on"
sql1.ExecNonQuery("UPDATE estados set estado ='"& texto&"' WHERE Id = " & id)

Else
texto="off"
sql1.ExecNonQuery("UPDATE estados set estado ='"& texto&"' WHERE Id = " & id)

End If
end sub
 

jluisruelas

Member
Licensed User
Longtime User
amigos, encontre el problemas yo creo que no se esta actualizando el valor por que uando cierro la aplicacion y la abro aparece el nuevo valor, que es lo que me falta hacer?
 

Descartex

Well-Known Member
Licensed User
Longtime User
Hola, muchacho!!!
Yo haría esta modificación:
B4X:
Sub Button1_Click
puntero.Position=0 'el estado que quiero modificar esta en la primera fila con el id 1
If (puntero.GetString("estado")="off" Then
sql1.ExecNonQuery("UPDATE estados set estado ='on' WHERE Id = '1' ")
Else 'El texto es "on"
sql1.ExecNonQuery("UPDATE estados set estado ='off' WHERE Id = '1' ")
End If
puntero = sql1.ExecQuery("SELECT * FROM estados") 'Carga en puntero los nuevos estados.
end sub
 

Heppy

Active Member
Licensed User
Longtime User
Haces una consulta con un cursor puntero que no has inicializado, miras si esta inicializado y coges la posición 1 en vez de 0
amigos, encontre el problemas yo creo que no se esta actualizando el valor por que uando cierro la aplicacion y la abro aparece el nuevo valor, que es lo que me falta hacer?


B4X:
SQLIns.BeginTransaction
SQLIns.ExecNonQuery("UPDATE Mantepre SET RECIBIDO=1")
SQLIns.TransactionSuccessful
SQLIns.EndTransaction

Para poner code y que sea más legible el código, pulsa en el quinto icono por la derecha y copia el código en esa ventana
En la ventana donde escribes el mensaje, tienes iconos de fuente, negrita, etc. Hay uno que sale un hint que pone code, que es para meter código y que sea más legible.
 
Top