Spanish Ayuda con SQLite y la clausula insert into

javidroid

Member
Quiero añadir un registro a una base de datos pero no lo consigo. Os cuento:

Tengo una base de datos llamada mantenimiento que añado b4a a través del botón file de abajo a la izquierda (como si fuese un archivo normal, como si fuese una foto…). Cuando abro el programa lo que quiero hacer es copiar esta bd al root de la sd (solo si no existe ya), para ello llamo a esta subrutina:

Sub COPIAR_DB

If File.Exists(File.DirRootExternal , "mantenimiento.db") = False Then

File.Copy(File.DirAssets, "mantenimiento.db", File.DirRootExternal, "mantenimiento.db")
End if

End Sub

Después de esto lo que quiero hacer es añadir un nuevo registro y lo hago de esta forma:
Dim sql1 as sql
Dim txt as string

SQL1.Initialize(File.DirRootExternal, "mantenimiento.db", true)
TXT="INSERT INTO acuario (numero, litros, descripcion) VALUES ('" & TXTNUMERO.Text & "', '" & txtlitros.Text & "', '" & txtdescrip.Text & "');"
sql1.BeginTransaction
SQL1.ExecNonQuery(txt)
sql1.EndTransaction
sql1.Close

¿Qué estoy hacienda mal? ¿Por qué no me inserta nada pero el programa tampoco me da fallo?. Un saludo, llevo una semana y media y no lo consigo,me he pasado por multitud de hilos y me he leído todo lo referente a sql del manual y nada... Gracias de antemano.M
 

jota

Active Member
Licensed User
Buenas, aparentemente esta todo bien, pero piensa que sqlite es case sensitive y como consejo para evitar problemas de comillas yo usaría la cadena de abajo para grabar los datos, también falta TransactionSuccessful para confirmar el exito de BeginTransaction.



SQL1.ExecNonQuery2("INSERT INTO llamadas (numero, litros, descripcion) VALUES (?,?,?)", Array As Object(TXTNUMERO.Text,txtlitros.Text,txtdescrip.Text ))

'Ejemplo de la biblioteca
SQL1.BeginTransaction
Try
'block of statements like:
For i = 1 to 1000
SQL1.ExecNonQuery("INSERT INTO table1 VALUES(...)
Next
SQL1.TransactionSuccessful
Catch
Log(LastException.Message) 'no changes will be made
End Try
SQL1.EndTransaction
 
Last edited:

javidroid

Member
Sigo sin solucionar el poblemar

En primer lugar dar las gracias por preocuparte por el tema. He implementado y cambiado las líneas de código que me has facilitado, pero sigo en la misma tesitura. De hecho cuendo pongo lo de transaccionsus.... me falla y me dice que no hay ninguna transaccion pendiente. ¿Tenéis algún ejemplo que sea capaz de insertar registros en una tabla?, estoy buscando y no encuentro ninguno. Muchas gracias.
 

jota

Active Member
Licensed User
He copiado y pegado tu codigo y recreado la db con todos los campos como texto y lo unico que te falla es que tienes que poner sql1.TransactionSuccessful detras de tu línea de código sql1.ExecNonQuery(txt) para que tu ejemplo funcione.
 

javidroid

Member
te lo agradezco enormemente

Yo habia puewto ya lo de suscesfull, pero el fallo es que lo ponia alreves. Primero el end y luego el suscesfull. Gracias x todo. Ya puedo continuar. Un abrazo
 
Top