{"id":13036,"date":"2017-11-21T12:31:56","date_gmt":"2017-11-21T11:31:56","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=13036"},"modified":"2017-11-21T12:31:56","modified_gmt":"2017-11-21T11:31:56","slug":"android-e-database-operazioni-rapide-con-la-classe-databaseutils","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/android-e-database-operazioni-rapide-con-la-classe-databaseutils\/","title":{"rendered":"Android e database: operazioni rapide con la classe DatabaseUtils"},"content":{"rendered":"<p>L&#8217;utilizzo di un <strong>database Sqlite in Android<\/strong> passa per lo pi\u00f9 attraverso la classe <em>SQLiteDatabase<\/em> che rappresenta un&#8217;istanza della sorgente dati cui accediamo ed \u00e8 ricca di metodi per l&#8217;interazione con essa.<\/p>\n<p>Per svolgere delle operazioni, scrivendo meno codice esiste anche la classe <a href=\"https:\/\/developer.android.com\/reference\/android\/database\/DatabaseUtils.html\" target=\"_blank\" rel=\"noopener noreferrer\">DatabaseUtils<\/a>. Vedremo subito alcuni strumenti inclusi al suo interno (si noti che sono <em>tutti metodi statici<\/em> da invocare pertanto senza istanziare alcun oggetto):<\/p>\n<ul>\n<li><em><strong>longForQuery<\/strong>(SQLiteDatabase db, String query, String[] selectionArgs)<\/em>: esegue la\u00a0<em>query<\/em> sull&#8217;oggetto <em>SQLiteDatabase (<\/em>eventualmente, effettuando la selezione con i parametri <em>selectionArgs<\/em>) \u00a0e <strong>restituisce un unico long come risultato<\/strong>. Il suo tipico utilizzo \u00e8 il caso in cui si svolge un&#8217;interrogazione per recuperare un solo record costituito da un singolo campo numerico come una chiave primaria o un conteggio effettuato sui dati;<\/li>\n<li><em><strong>cursorRowToContentValues<\/strong> (Cursor cursor, ContentValues values)<\/em>:<strong> legge l&#8217;intero contenuto di <em>cursor<\/em><\/strong> (risultato di una query) <strong>e lo trasferisce in una struttura dati ContentValues<\/strong>, tipicamente usata come fonte dati per le operazioni di <em>update<\/em> e di <em>insert<\/em>. Possiamo pensare a questo metodo come comodo strumento per la copia di dati da una tabella ad un&#8217;altra: come si pu\u00f2 immaginare, i dati contenuti nell&#8217;oggetto <em>values<\/em>\u00a0prodotto come risultato possono essere ulteriormente modificati prima di essere coinvolti in altre operazioni. Di questo metodo esistono molte varianti tra cui\u00a0<em>cursorStringToContentValues<\/em>,\u00a0<em>cursorShortToContentValues<\/em>,\u00a0<em>cursorRowToContentValues<\/em>;<\/li>\n<li><em>\u00a0<strong>dumpCursor<\/strong> (Cursor cursor)<\/em>: esegue il <strong>dump <\/strong>(la stampa)<strong> del cursore su System.out<\/strong>. Utilizzato a scopo di debug, esiste in molte varianti come\u00a0<em>dumpCursor (Cursor cursor, PrintStream stream)<\/em> grazie al quale \u00e8 possibile anche ridirezionare l&#8217;output su uno stream specifico.<\/li>\n<\/ul>\n<p>Quelli indicati non sono altro che alcuni dei metodi che si hanno a disposizione in DatabaseUtils. La documentazione ufficiale offrir\u00e0 molte notizie interessanti in merito:\u00a0consultatela e suggeriteci qualche altro utile strumento\u00a0che avete individuato!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#8217;utilizzo di un database Sqlite in Android passa per lo pi\u00f9 attraverso la classe SQLiteDatabase che rappresenta&#8230;<\/p>\n","protected":false},"author":561,"featured_media":13323,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1682],"tags":[1278,1530,102],"class_list":["post-13036","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","tag-android","tag-database","tag-sqlite"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/13036","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=13036"}],"version-history":[{"count":2,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/13036\/revisions"}],"predecessor-version":[{"id":13324,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/13036\/revisions\/13324"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/13323"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=13036"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=13036"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=13036"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}