Italian sqlite comandi

pablan

Member
Ciao,
ho provato a leggere qualcosa qui sul forum a proposito dei comandi da utilizzare per operare su database ma ci sono una serie di operazioni che (per quanto potrebbero sembrare banali) non riesco a capire perchè mi diano errore. Forse per qualche svista o più probabilmente per la mia ignoranza non riesco a capire cosa devo modificare.
Questo codice:
B4X:
Sub ListView1_ItemClick (Position As Int, Value As Object)
If sql1.IsInitialized = False Then
    sql1.Initialize(File.DirrootExternal, "prenotazione.db", True)
    End If
    dbcursor=sql1.ExecQuery("SELECT nome FROM prenotazioni")
    Log(Position)
    lblnome.Text=dbcursor.GetString2(Position)
End Sub
mi riporta questo errore
"An error has occured in sub:
main_listview1_itemclick (java line.499)
android.database.CursorIndexOutOfBoundsException:Index-1 requested, with a size of 1"

Il log(position) mi indica "0".

Ne approfitto per un'altra domanda:
è giusta questa stringa qualora volessi modificare un campo "risposta" in una tabella "prenotazioni"?
B4X:
sql1.ExecNonQuery("UPDATE prenotazioni Set risposta=txtrisposta.text WHERE nome=lblnome.text")
Anche qui mi riporta errore: in generale è possibile usare le variabili all'interno del comando SQL?
Grazie e scusate la mia ignoranza
 

rbsoft

Active Member
Licensed User
Longtime User
dbcursor=sql1.ExecQuery("SELECT nome FROM prenotazioni")

Is prenotazioni also a table in the prenotazioni.db? The syntax would be:
È prenotazioni anche una tabella nel prenotazioni.db? La sintassi sarebbe:
"SELECT nome from MyTableName"


sql1.ExecNonQuery("UPDATE prenotazioni Set risposta=txtrisposta.text WHERE nome=lblnome.text")
This should be:
Questo dovrebbe essere:
sql1.ExecNonQuery("UPDATE prenotazioni Set risposta=' & txtrisposta.text & "' WHERE nome='" & lblnome.text)


Again the question: Is prenotazioni the table name?



Ancora una volta la domanda: prenotazioni il nome della tabella?

(Traduzione da Google Translator.)


Rolf
 

pablan

Member
Grazie per la tempestiva risposta.. provo subito i consigli relativi al secondo quesito.
Per la domanda relativa alla tabella, si, il nome del database è prenotazione.db e la tabella "prenotazioni" all'interno della quale vi è, tra le altre, la colonna "nome"
 

rbsoft

Active Member
Licensed User
Longtime User
I just noticed that I had an error in this:
Ho appena notato che ho avuto un errore in questo:

sql1.ExecNonQuery("UPDATE prenotazioni Set risposta=' & txtrisposta.text & "' WHERE nome='" & lblnome.text)

It should be:
Dovrebbe essere:

sql1.ExecNonQuery("UPDATE prenotazioni Set risposta=' & txtrisposta.text & "' WHERE nome='" & lblnome.text & "'")
Spiacente!

Sorry!

Rolf



(Traduzione da Google Translator.)
 

maxware

Well-Known Member
Licensed User
Longtime User
Ciao Pablan
un paio di cose
mi sembra che ti manchi l' assegnazione della posizione
dbcursor.position=0


se supponiamo che il db sia vuoto cosi come scritto ti torna errore.

metti un test per vedere se esistono record

altra cosa

getstring2(position) secondo me puo' trarti in confuzione

la position e' il n° del record

mentre tra parentesi devi mettere l'indice del campo che nel tuo caso va bene zero in quanto prelevi solo il campo Nome


per l'update ti hanno gia risposto
Ciaoo
Mamo
 

pablan

Member
Grazie per le risposte. Con i vostri suggerimenti ho risolto entrambi i problemi. Ho risolto nel primo caso, come ha detto Mamo, usando dbcursor.position (position) e dopo dbcursor.getstring. Per l'altro problema continuava a darmi errore ma poi rileggendo vecchi post ho provato ad utilizzare nella sintassi "QUOTE" e ho risolto, però mi avete fatto capire che sbagliavo totalmente la sintassi. Grazie ancora!
 
Top