{"id":415,"date":"2010-10-19T04:52:03","date_gmt":"2010-10-19T11:52:03","guid":{"rendered":"http:\/\/wiebe-elsinga.com\/blog\/?p=415"},"modified":"2011-10-20T21:15:21","modified_gmt":"2011-10-21T04:15:21","slug":"android-and-databases","status":"publish","type":"post","link":"http:\/\/wiebe-elsinga.com\/blog\/android-and-databases\/","title":{"rendered":"How-To: Android and Databases"},"content":{"rendered":"<div class=\"wpsso-pinterest-pin-it-image\" style=\"display:none !important;\">\n<\/div><!-- .wpsso-pinterest-pin-it-image -->\n\n<p><a href=\"http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/05\/android.jpg\"><img loading=\"lazy\" class=\"alignleft size-thumbnail wp-image-170\" style=\"padding-right: 10px;\" title=\"android\" src=\"http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/05\/android-150x150.jpg\" alt=\"\" width=\"150\" height=\"150\" srcset=\"http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/05\/android-150x150.jpg 150w, http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/05\/android-300x300.jpg 300w, http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/05\/android-200x200-cropped.jpg 200w, http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/05\/android.jpg 500w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p>Applications usually uses databases to store application data. Inside this article I will be explaining two implementation types:<\/p>\n<ul>\n<li>SQLite<\/li>\n<li>DB4o<\/li>\n<\/ul>\n<p>I will use the Android application which was developed inside my <a href=\"http:\/\/wiebe-elsinga.com\/blog\/?p=275\">previous post<\/a>.<br \/>\n<!--more--><\/p>\n<h2>SQLite<\/h2>\n<p>SQLite is a lightweight relational database engine. SQLite is fast and has a small footprint, making it perfect for Android devices. Instead of the heavyweight server-based databases like Oracle and Microsoft SQL Server, each SQLite database is stored within a single file on disk. So lets set-up an implementation.<\/p>\n<ol>\n<li>Create a DB Helper Class<\/li>\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"java codecolorer\"><span class=\"kw1\">public<\/span> DbHelper<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+context\"><span class=\"kw3\">Context<\/span><\/a> context<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">super<\/span><span class=\"br0\">&#40;<\/span>context, DATABASE_NAME, <span class=\"kw2\">null<\/span>, DATABASE_VERSION<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n@Override<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> onCreate<span class=\"br0\">&#40;<\/span>SQLiteDatabase sqliteDb<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> sql <span class=\"sy0\">=<\/span> <span class=\"st0\">&quot;CREATE TABLE &quot;<\/span> <span class=\"sy0\">+<\/span> TABLE_NAME <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot; (&quot;<\/span> <span class=\"sy0\">+<\/span> COLOMN_NAME<span class=\"sy0\">+<\/span> <span class=\"st0\">&quot; LONGTEXT&quot;<\/span> <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;);&quot;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;sqliteDb.<span class=\"me1\">execSQL<\/span><span class=\"br0\">&#40;<\/span>sql<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n@Override<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> onUpgrade<span class=\"br0\">&#40;<\/span>SQLiteDatabase sqliteDb, <span class=\"kw4\">int<\/span> oldVersion,<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw4\">int<\/span> newVersion<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;Log.<span class=\"me1\">i<\/span><span class=\"br0\">&#40;<\/span>DbHelper.<span class=\"kw1\">class<\/span>.<span class=\"me1\">getName<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>, <span class=\"st0\">&quot;Upgrading database from version &quot;<\/span> <span class=\"sy0\">+<\/span> oldVersion <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot; to &quot;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">+<\/span> newVersion <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;, which will destroy all old data&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;sqliteDb.<span class=\"me1\">execSQL<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;DROP TABLE IF EXISTS &quot;<\/span> <span class=\"sy0\">+<\/span> TABLE_NAME<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;onCreate<span class=\"br0\">&#40;<\/span>sqliteDb<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<li> Create a Data layer class. This class will be responsible for using our <i>DbHelper<\/i> to perform our desired CRUD functions.<\/li>\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;height:100%;\"><div class=\"java codecolorer\"><span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> addSearchResult<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> text<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;SQLiteDatabase db <span class=\"sy0\">=<\/span> _dbHelper.<span class=\"me1\">getWritableDatabase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ContentValues values <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> ContentValues<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; values.<span class=\"me1\">put<\/span><span class=\"br0\">&#40;<\/span>_dbHelper.<span class=\"me1\">COLOMN_NAME<\/span>, text<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db.<span class=\"me1\">insert<\/span><span class=\"br0\">&#40;<\/span>_dbHelper.<span class=\"me1\">TABLE_NAME<\/span>, <span class=\"st0\">&quot;&quot;<\/span>, values<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">finally<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>db <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> clearHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;SQLiteDatabase db <span class=\"sy0\">=<\/span> _dbHelper.<span class=\"me1\">getWritableDatabase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db.<span class=\"me1\">delete<\/span><span class=\"br0\">&#40;<\/span>_dbHelper.<span class=\"me1\">TABLE_NAME<\/span>, <span class=\"st0\">&quot;&quot;<\/span>, <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">finally<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>db <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> List<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> getHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;SQLiteDatabase db <span class=\"sy0\">=<\/span> _dbHelper.<span class=\"me1\">getWritableDatabase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; List<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> results <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> ArrayList<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+cursor\"><span class=\"kw3\">Cursor<\/span><\/a> c <span class=\"sy0\">=<\/span> db.<span class=\"me1\">rawQuery<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;select * from &quot;<\/span> <span class=\"sy0\">+<\/span> _dbHelper.<span class=\"me1\">TABLE_NAME<\/span>, <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>c.<span class=\"me1\">getCount<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"sy0\">&gt;<\/span> <span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;c.<span class=\"me1\">moveToFirst<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">do<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; results.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span>c.<span class=\"me1\">getString<\/span><span class=\"br0\">&#40;<\/span>c.<span class=\"me1\">getColumnIndex<\/span><span class=\"br0\">&#40;<\/span>_dbHelper.<span class=\"me1\">COLOMN_NAME<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">while<\/span> <span class=\"br0\">&#40;<\/span>c.<span class=\"me1\">moveToNext<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">return<\/span> results<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">finally<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>db <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<li>Add CRUD functions to your Android application<\/li>\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"java codecolorer\">Db dB <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Db<span class=\"br0\">&#40;<\/span>getBaseContext<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\ndB.<span class=\"me1\">addSearchResult<\/span><span class=\"br0\">&#40;<\/span>result<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">private<\/span> <span class=\"kw4\">void<\/span> clearHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;Db dB <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Db<span class=\"br0\">&#40;<\/span>getBaseContext<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;dB.<span class=\"me1\">clearHistory<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">private<\/span> <span class=\"kw4\">void<\/span> displayHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;Db dB <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Db<span class=\"br0\">&#40;<\/span>getBaseContext<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;List<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> history <span class=\"sy0\">=<\/span> dB.<span class=\"me1\">getHistory<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp;ArrayAdapter<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> mHistory <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> ArrayAdapter<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span>, R.<span class=\"me1\">layout<\/span>.<span class=\"me1\">row<\/span>, R.<span class=\"me1\">id<\/span>.<span class=\"me1\">ENTRY_CELL<\/span>, history<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp;historyList.<span class=\"me1\">setAdapter<\/span><span class=\"br0\">&#40;<\/span>mHistory<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<\/ol>\n<p>Download source code <a href='http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/10\/AndroidSQLLite.zip'>AndroidSQLLite.zip<\/a> [20kB]<\/p>\n<h2>DB4o<\/h2>\n<p>db4o is an object database, so no mapping of tables in a relational model. You can persist complex objects with nested collections or other complex objects, any level of complexity in your hierarchy. You&#8217;re not limited to flat objects with primitive types to get a reasonable performance. So lets set-up an implementation.<\/p>\n<ol>\n<li>Create a persistent Object<\/li>\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"java codecolorer\"><span class=\"kw1\">public<\/span> <span class=\"kw1\">class<\/span> HistoryItem <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> item<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">public<\/span> HistoryItem<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">public<\/span> HistoryItem<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> item<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">item<\/span><span class=\"sy0\">=<\/span> item<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> setItem<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> item<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">item<\/span> <span class=\"sy0\">=<\/span> item<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">public<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> getItem<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> item<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<li>Create a DB Helper Class<\/li>\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;height:100%;\"><div class=\"java codecolorer\"><span class=\"kw1\">public<\/span> DbHelper<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+context\"><span class=\"kw3\">Context<\/span><\/a> context<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>database <span class=\"sy0\">==<\/span> <span class=\"kw2\">null<\/span> <span class=\"sy0\">||<\/span> database.<span class=\"me1\">ext<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">isClosed<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;database <span class=\"sy0\">=<\/span> Db4oEmbedded.<span class=\"me1\">openFile<\/span><span class=\"br0\">&#40;<\/span>configure<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>, db4oDBFullPath<span class=\"br0\">&#40;<\/span>context<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+exception\"><span class=\"kw3\">Exception<\/span><\/a> ie<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class=\"me1\">e<\/span><span class=\"br0\">&#40;<\/span>DbHelper.<span class=\"kw1\">class<\/span>.<span class=\"me1\">getName<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>, ie.<span class=\"me1\">toString<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">private<\/span> <span class=\"kw1\">static<\/span> EmbeddedConfiguration configure<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;EmbeddedConfiguration configuration <span class=\"sy0\">=<\/span> Db4oEmbedded.<span class=\"me1\">newConfiguration<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;configuration.<span class=\"me1\">common<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">objectClass<\/span><span class=\"br0\">&#40;<\/span>HistoryItem.<span class=\"kw1\">class<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">objectField<\/span><span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"st0\">&quot;item&quot;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">indexed<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;configuration.<span class=\"me1\">common<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">objectClass<\/span><span class=\"br0\">&#40;<\/span>HistoryItem.<span class=\"kw1\">class<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">cascadeOnUpdate<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;configuration.<span class=\"me1\">common<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">objectClass<\/span><span class=\"br0\">&#40;<\/span>HistoryItem.<span class=\"kw1\">class<\/span><span class=\"br0\">&#41;<\/span>.<span class=\"me1\">cascadeOnDelete<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">true<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">return<\/span> configuration<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">private<\/span> <a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> db4oDBFullPath<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+context\"><span class=\"kw3\">Context<\/span><\/a> ctx<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">return<\/span> ctx.<span class=\"me1\">getDir<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;data&quot;<\/span>, DATABASE_MODE<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">+<\/span> <span class=\"st0\">&quot;\/&quot;<\/span> <span class=\"sy0\">+<\/span> DATABASE_NAME<span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> close<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span>.<span class=\"me1\">database<\/span> <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">this<\/span>.<span class=\"me1\">database<\/span>.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<li> Create a Data layer class.<\/li>\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;height:100%;\"><div class=\"java codecolorer\"><span class=\"kw1\">public<\/span> Db<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+context\"><span class=\"kw3\">Context<\/span><\/a> c<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">if<\/span><span class=\"br0\">&#40;<\/span>_dbHelper<span class=\"sy0\">==<\/span><span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; _dbHelper <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> DbHelper<span class=\"br0\">&#40;<\/span>c<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> addSearchResult<span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+string\"><span class=\"kw3\">String<\/span><\/a> text<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;ObjectContainer db <span class=\"sy0\">=<\/span> _dbHelper.<span class=\"me1\">getDatabase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db.<span class=\"me1\">store<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> HistoryItem<span class=\"br0\">&#40;<\/span>text<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db.<span class=\"me1\">commit<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">finally<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>db <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> <span class=\"kw4\">void<\/span> clearHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;ObjectContainer db <span class=\"sy0\">=<\/span> _dbHelper.<span class=\"me1\">getDatabase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ObjectSet<span class=\"sy0\">&lt;<\/span>HistoryItem<span class=\"sy0\">&gt;<\/span> items <span class=\"sy0\">=<\/span> db.<span class=\"me1\">queryByExample<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> HistoryItem<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span>HistoryItem historyItem <span class=\"sy0\">:<\/span> items<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.<span class=\"me1\">delete<\/span><span class=\"br0\">&#40;<\/span>historyItem<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; db.<span class=\"me1\">commit<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">catch<\/span> <span class=\"br0\">&#40;<\/span><a href=\"http:\/\/www.google.com\/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+exception\"><span class=\"kw3\">Exception<\/span><\/a> e<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.<span class=\"me1\">e<\/span><span class=\"br0\">&#40;<\/span>Db.<span class=\"kw1\">class<\/span>.<span class=\"me1\">getName<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>, e.<span class=\"me1\">toString<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">finally<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>db <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">public<\/span> List<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> getHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;ObjectContainer db <span class=\"sy0\">=<\/span> _dbHelper.<span class=\"me1\">getDatabase<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"kw1\">try<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; List<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> results <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> ArrayList<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ObjectSet<span class=\"sy0\">&lt;<\/span>HistoryItem<span class=\"sy0\">&gt;<\/span> items <span class=\"sy0\">=<\/span> db.<span class=\"me1\">queryByExample<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">new<\/span> HistoryItem<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">for<\/span> <span class=\"br0\">&#40;<\/span>HistoryItem historyItem <span class=\"sy0\">:<\/span> items<span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;results.<span class=\"me1\">add<\/span><span class=\"br0\">&#40;<\/span>historyItem.<span class=\"me1\">getItem<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> results<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span> <span class=\"kw1\">finally<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span>db <span class=\"sy0\">!=<\/span> <span class=\"kw2\">null<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;db.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<li>Add CRUD functions to your Android application<\/li>\n<div class=\"codecolorer-container java default\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"java codecolorer\">Db dB <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Db<span class=\"br0\">&#40;<\/span>getBaseContext<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\ndB.<span class=\"me1\">addSearchResult<\/span><span class=\"br0\">&#40;<\/span>result<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">private<\/span> <span class=\"kw4\">void<\/span> clearHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;Db dB <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Db<span class=\"br0\">&#40;<\/span>getBaseContext<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;dB.<span class=\"me1\">clearHistory<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">private<\/span> <span class=\"kw4\">void<\/span> displayHistory<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;Db dB <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> Db<span class=\"br0\">&#40;<\/span>getBaseContext<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;List<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> history <span class=\"sy0\">=<\/span> dB.<span class=\"me1\">getHistory<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp;ArrayAdapter<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span> mHistory <span class=\"sy0\">=<\/span> <span class=\"kw1\">new<\/span> ArrayAdapter<span class=\"sy0\">&lt;<\/span>String<span class=\"sy0\">&gt;<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw1\">this<\/span>, R.<span class=\"me1\">layout<\/span>.<span class=\"me1\">row<\/span>, R.<span class=\"me1\">id<\/span>.<span class=\"me1\">ENTRY_CELL<\/span>, history<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp;historyList.<span class=\"me1\">setAdapter<\/span><span class=\"br0\">&#40;<\/span>mHistory<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"br0\">&#125;<\/span><\/div><\/div>\n<\/ol>\n<p>Download source code <a href='http:\/\/wiebe-elsinga.com\/blog\/wp-content\/uploads\/2010\/10\/AndroidDb4o.zip'>AndroidDb4o<\/a> [2131kB]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Applications usually uses databases to store application data. Inside this article I will be explaining two implementation types: SQLite DB4o I will use the Android application which was developed inside my previous post.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[7,95],"tags":[154,38,40,39,37],"_links":{"self":[{"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/posts\/415"}],"collection":[{"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/comments?post=415"}],"version-history":[{"count":0,"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/posts\/415\/revisions"}],"wp:attachment":[{"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/media?parent=415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/categories?post=415"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/wiebe-elsinga.com\/blog\/wp-json\/wp\/v2\/tags?post=415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}