Sqlite e valore autoincrementale

di il
6 risposte

Sqlite e valore autoincrementale

Salve a tutti,

sto cercando di capire qualcosa riguardo l'utilizzo dei db.

ho fatto un piccolo db con 8 campi di cui uno autoincrementale chiamato id

Il problema è che NON so gestire questo campo, nel senso che nel momento in cui vado ad aggiungere un record NON considero questo campo inquanto deve incrementaresi da solo è giusto ?

Nel momento in cui vado ad inserire un nuovo record e poi lo rileggo popolando una data grid view vedo che i valori sono spostati di una colonna ed è normale che sia cosi perche scrivendo il record "ometto" la scrittura del campo id che dovrebbe avvenire automticamente visto che è autoincrementale.

Grazie a tutti .

Dimenticavo.

I record vengono scritti correttamente, il problema sta nella lettura ( vedere codice seguente ) 

Nella data grid view ho creato anche la colonna ID settandola come NON visibile 

Dim Query As String = "SELECT * FROM Tabella"
Using comando As New SQLiteCommand(Query, connessione)
Using Leggi As SQLiteDataReader = comando.ExecuteReader
    While Leggi.Read	
    Dim Id As Integer = Leggi.GetString(0)  ' qui mi restituisce l'errore impossibile leggere database specified cast is not valid
    
   

6 Risposte

  • Re: Sqlite e valore autoincrementale

    L'auto incremento vale solo in INSERT.

    Il problema nel tuo codice dovrebbe risiedere nel fatto che la GetString legge un campo di tipo testo (char, varchar, e similari) mentre il tuo ID sarà sicuramente un intero.

  • Re: Sqlite e valore autoincrementale

    07/12/2024 - psx2 ha scritto:

    Salve a tutti,

    sto cercando di capire qualcosa riguardo l'utilizzo dei db.

    ho fatto un piccolo db con 8 campi di cui uno autoincrementale chiamato id

    Il problema è che NON so gestire questo campo, nel senso che nel momento in cui vado ad aggiungere un record NON considero questo campo inquanto deve incrementaresi da solo è giusto ?

    Nel momento in cui vado ad inserire un nuovo record e poi lo rileggo popolando una data grid view vedo che i valori sono spostati di una colonna ed è normale che sia cosi perche scrivendo il record "ometto" la scrittura del campo id che dovrebbe avvenire automticamente visto che è autoincrementale.

    Grazie a tutti .

    Dimenticavo.

    I record vengono scritti correttamente, il problema sta nella lettura ( vedere codice seguente ) 

    Nella data grid view ho creato anche la colonna ID settandola come NON visibile 

    Dim Query As String = "SELECT * FROM Tabella"
    Using comando As New SQLiteCommand(Query, connessione)
    Using Leggi As SQLiteDataReader = comando.ExecuteReader
        While Leggi.Read	
        Dim Id As Integer = Leggi.GetString(0)  ' qui mi restituisce l'errore impossibile leggere database specified cast is not valid
        
       

    e se provi

    Wile Leggi.Read
    Datagredview.Rows.Add(Leggi("ID"), Leggi("altro tuo campo"), Leggi("altro tuo campo2"), Leggi("altro tuo campo3"))
            End While

            Dove Datagredview è il nome del tuo DGW e i nomi dei campi sono quelli del tuo DB ovviamente...

  • Re: Sqlite e valore autoincrementale

    Grazie a tutti !!!

    Siete stati gentilissimi...... beata ignoranza , avevi ragione Sgrubak mi ostinavo a leggere un intero utilizzando GetString !!!!

    risolto con

    GetInt32(0)

    grazie ancora a tutti dell'aiuto !

  • Re: Sqlite e valore autoincrementale

    Più semplicemente:

    Dim Id As  Integer = Leggi("Id")

    o

    Dim Id As Integer = Leggi(0)

    Poi, per la precisione, direi

    ho fatto un piccolo db con una tabella con 8 campi di cui uno autoincrementale chiamato id

  • Re: Sqlite e valore autoincrementale

    Grumpy grazie infinite, hai ragione !

    e scusa il ritardo !

  • Re: Sqlite e valore autoincrementale

    07/12/2024 - psx2 ha scritto:

    beata ignoranza

    Ci ho sbattuto la testa pure io prima di te! XD 

Devi accedere o registrarti per scrivere nel forum
6 risposte