Io sto usando un compilato SQLiteStatement
con le transazioni per ottimizzare le operazioni di SQLite, ma sto leggendo la documentazione per la funzione execute
:SQLiteStatement eseguire un SELECT/INSERT/DELETE/UPDATE
eseguire questa istruzione SQL, se non è un SELECT/INSERT/DELETE/UPDATE, ad esempio CREATE/Drop table, vista, grilletto, indice ecc
questo sembra implicare che questa funzione non deve essere usato con SELECT/INSERT/DELETE/UPDATE
dichiarazioni, ma Io ho codice che lo utilizza con un inserto e funziona.
Sono a conoscenza di executeInsert
e degli altri metodi, ma executeUpdateDelete
non è disponibile nel mio livello API, quindi posso usare execute
?
Anche se non ho bisogno dell'ultimo ID di inserimento o il numero di righe interessate dovrei usare execute
invece di executeInsert
e così via, in altre parole è più efficiente?
Quindi vuoi dire che non c'è alcuna garanzia che 'execute()' funzionerà anche in futuro, rilasciato con 'INSERT statement' anche i documenti non fanno altro che dirlo' Esegui questa istruzione SQL, se non è un SELECT/INSERT/.... 'allora non dovrebbe eseguire' INSERT' (perché questa è solo una dichiarazione che ho testato) e il suo funzionamento! E grazie per le preziose informazioni :) –
Anche 'statement.executeUpdateDelete();' questo è disponibile nell'API 11 qualsiasi soluzione alternativa per 2.2? –
@MuhammadBabar La documentazione prova a dirti che il metodo 'execute' non è inteso per le istruzioni che hanno un risultato. Come una serie impostata per una selezione, il conteggio delle modifiche per l'aggiornamento/eliminazione o l'ultimo ID riga per un inserimento. Finora non esiste un codice che impedisca il funzionamento di quelle istruzioni non intenzionali. Forse una futura modifica all'architettura del database non lo so.Gli ingegneri del framework Android potrebbero facilmente aggiungere una tale modifica senza preavviso perché la descrizione del metodo avverte che non funzionerà da anni. – zapl