Domanda

Sto facendo un wrapper di API SQLite C.E voglio tornare a rowid come tipo intero.Per contrassegnare il caso di errore, ho bisogno di un valore non valido della rowid.È lì valore non valido di sqlite rowid?O tutti i valori negli interi di 64 bit firmati sono validi per RowID?(Perché se lo è, devo scegliere un altro modo di implementare il caso di errore di marcatura)

È stato utile?

Soluzione

ID Riga sono numeri interi firmati a 64 bit, quindi il massimo è 0x7FFFFFFFFFFFFFFFFLLL.Ma a meno che un ID riga negativo o zero è stato inserito esplicitamente, gli ID di riga generati automaticamente sono sempre maggiori di zero.Se è possibile essere certi che gli ID di riga verranno sempre generati automaticamente, quindi zero o -1 saranno valori sicuri per per il ritorno dello stato degli errori.

Pensando inoltre, mi rendo conto che la chiamata API sqlite3_last_insert_rowid restituisce zero se nulla sia mai stato inserito nella tabella, rendendo così zero un ID riga "non valido" defacto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top