檢索單個標題
想要通過ID檢索單個標題,可以使用DBAdapter類的getTitle()方法:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DBAdapter db = new DBAdapter(this); //---get a title--- db.open(); Cursor c = db.getTitle(2); if (c.moveToFirst()) DisplayTitle(c); else Toast.makeText(this, "No title found", Toast.LENGTH_LONG).show(); db.close(); } |
返回的結果是一個Cursor對象,如果返回一行,可以使用DisplayTitle()方法顯示標題的詳細信息,否則就使用Toast類顯示一個錯誤消息。
更新一個標題
要更新一個特定的標題,可以調用DBAdapter的updateTitle()方法,傳遞想要更新的標題的ID給它就可以了,如清單6所示。
清單6 調用DBAdapter類的updateTitle()方法更新標題
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DBAdapter db = new DBAdapter(this); //---更新標題--- db.open(); if (db.updateTitle(1, "0470285818", "C# 2008 Programmer's Reference", "Wrox Press")) Toast.makeText(this, "Update successful.", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Update failed.", Toast.LENGTH_LONG).show(); //------------------- //---檢索相同的標題--- Cursor c = db.getTitle(1); if (c.moveToFirst()) DisplayTitle(c); else Toast.makeText(this, "No title found", Toast.LENGTH_LONG).show(); //------------------- db.close(); }
如果更新成功會顯示一條表示成功的消息,同時,你可以檢索剛剛更新的標題看更新結果是否正確。
刪除一個標題
想要刪除一個標題,可以調用DBAdapter類的deleteTitle()方法,傳遞你想要刪除的標題的ID即可:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); DBAdapter db = new DBAdapter(this); //---delete a title--- db.open(); if (db.deleteTitle(1)) Toast.makeText(this, "Delete successful.", Toast.LENGTH_LONG).show(); else Toast.makeText(this, "Delete failed.", Toast.LENGTH_LONG).show(); db.close(); }
如果刪除成功會顯示一條表示成功的消息。
升級數據庫
要升級數據庫,修改DBAdapter類中DATABASE_VERSION常量的值比之前的值大,如之前的值是1,將其改爲2:
public class DBAdapter { public static final String KEY_ROWID = "_id"; public static final String KEY_ISBN = "isbn"; public static final String KEY_TITLE = "title"; public static final String KEY_PUBLISHER = "publisher"; private static final String TAG = "DBAdapter"; private static final String DATABASE_NAME = "books"; private static final String DATABASE_TABLE = "titles"; //---change this to a higher value--- private static final int DATABASE_VERSION = 2; private static final String DATABASE_CREATE = "create table titles (_id integer primary key autoincrement, " + "isbn text not null, title text not null, " + "publisher text not null);";
當你再次運行這個應用程序時,你會在Eclipse的LogCat窗口中看到數據庫已經升級的消息,如圖5所示。
圖5 LogCat窗口-消息顯示數據庫升級成功
簡化數據庫訪問
使用DBAdapter類,可以簡化你的Android應用程序訪問數據庫記錄的操作,一個重要的事情是在Android中創建的SQLite數據庫只有創建它的應用程序可以訪問它。如果你要共享數據,你需要使用一個內容提供器,這個將在以後的文章中再介紹了。