新聞中心
隨著智能手機的普及,越來越多的應用程序需要使用數(shù)據(jù)存儲,而數(shù)據(jù)庫成為了存儲數(shù)據(jù)的重要手段之一。在安卓系統(tǒng)中,我們可以使用SQLite數(shù)據(jù)庫進行數(shù)據(jù)存儲和操作。本文將為大家介紹如何在安卓系統(tǒng)中操作數(shù)據(jù)庫。

為萬安等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及萬安網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為做網(wǎng)站、成都網(wǎng)站設計、萬安網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
1.創(chuàng)建數(shù)據(jù)庫
在安卓系統(tǒng)中創(chuàng)建數(shù)據(jù)庫有多種方式,其中最常用的方式是在應用程序的MnActivity類中創(chuàng)建。在MnActivity中創(chuàng)建數(shù)據(jù)庫要分為兩個步驟:在onCreate方法中創(chuàng)建數(shù)據(jù)庫,并在onUpgrade方法中更新數(shù)據(jù)庫。
(1)在onCreate方法中創(chuàng)建數(shù)據(jù)庫
“`java
public class MnActivity extends AppCompatActivity {
private static final String DB_NAME=”mydb”; //數(shù)據(jù)庫名稱
private static final int DB_VERSION=1; //數(shù)據(jù)庫版本號
private SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mn);
}
private void createDatabase() {
DBHelper dbHelper = new DBHelper(this,DB_NAME,null,DB_VERSION);
db=dbHelper.getWritableDatabase();
}
}
“`
在以上代碼中,我們創(chuàng)建了一個DBHelper類用于繼承SQLiteOpenHelper類,然后重寫onCreate方法,在該方法中創(chuàng)建數(shù)據(jù)庫并返回一個可寫的數(shù)據(jù)庫對象。
DBHelper類的實現(xiàn)如下:
“`java
public class DBHelper extends SQLiteOpenHelper {
private static final String CREATE_TABLE_SQL=”CREATE TABLE Person(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)”;
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
“`
在以上代碼中,我們定義了一個CREATE_TABLE_SQL語句用于創(chuàng)建一個Person表,該表有三個字段:_id、name和age。
(2)在onUpgrade方法中更新數(shù)據(jù)庫
有時候,我們需要更新數(shù)據(jù)庫,比如添加新的表或字段等。此時,我們需要在DBHelper中重寫onUpgrade方法,在該方法中執(zhí)行更新操作。
“`java
public class DBHelper extends SQLiteOpenHelper {
private static final String CREATE_TABLE_SQL=”CREATE TABLE Person(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)”;
private static final String ALTER_TABLE_SQL=”ALTER TABLE Person ADD COLUMN address TEXT”;
public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_SQL);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if(oldVersion
db.execSQL(ALTER_TABLE_SQL);
}
}
}
“`
在以上代碼中,我們定義了一個ALTER_TABLE_SQL語句用于在Person表中添加一個address字段,在onUpgrade方法中判斷如果當前版本低于2,則執(zhí)行該更新操作。
2.向數(shù)據(jù)庫中插入數(shù)據(jù)
插入數(shù)據(jù)是數(shù)據(jù)庫操作中的重要環(huán)節(jié)之一,在安卓系統(tǒng)中插入數(shù)據(jù)有多種方式,其中最常用的方式是使用ContentValues類。
“`java
private void insertData(){
ContentValues values=new ContentValues();
values.put(“name”,”Tom”);
values.put(“age”,18);
db.insert(“Person”,null,values);
}
“`
在以上代碼中,我們創(chuàng)建了一個ContentValues對象,并向其中添加了兩個字段:name和age,然后將該對象作為參數(shù)調(diào)用db的insert方法,將數(shù)據(jù)插入到名為Person的表中。如果在表中定義了自增長字段,我們可以不用指定該字段的值,系統(tǒng)會自動生成。
3.查詢數(shù)據(jù)庫中的數(shù)據(jù)
查詢操作是數(shù)據(jù)庫操作中另一個重要的環(huán)節(jié),我們在安卓系統(tǒng)中查詢數(shù)據(jù)庫中的數(shù)據(jù)也有多種方式,比如查詢表中的所有數(shù)據(jù)和查詢特定數(shù)據(jù)等。
(1)查詢表中的所有數(shù)據(jù)
“`java
private void queryAllData(){
Cursor cursor=db.query(“Person”,null,null,null,null,null,null);
if(cursor.moveToFirst()){
do{
int id=cursor.getInt(cursor.getColumnIndex(“_id”));
String name=cursor.getString(cursor.getColumnIndex(“name”));
int age=cursor.getInt(cursor.getColumnIndex(“age”));
Log.d(“MnActivity”,”id=”+id+”,name=”+name+”,age=”+age);
}while(cursor.moveToNext());
}
cursor.close();
}
“`
在以上代碼中,我們先調(diào)用db的query方法查詢Person表中的所有數(shù)據(jù),然后通過Cursor類遍歷查詢結(jié)果,最后取出每個字段的值并輸出到Log中。
(2)查詢特定數(shù)據(jù)
“`java
private void queryData(){
Cursor cursor=db.query(“Person”,null,”name=?”,new String[]{“Tom”},null,null,null);
if(cursor.moveToFirst()){
do{
int id=cursor.getInt(cursor.getColumnIndex(“_id”));
String name=cursor.getString(cursor.getColumnIndex(“name”));
int age=cursor.getInt(cursor.getColumnIndex(“age”));
Log.d(“MnActivity”,”id=”+id+”,name=”+name+”,age=”+age);
}while(cursor.moveToNext());
}
cursor.close();
}
“`
在以上代碼中,我們調(diào)用db的query方法查詢Person表中name字段等于Tom的數(shù)據(jù),其他參數(shù)的用法與查詢所有數(shù)據(jù)時相同。
4.更新數(shù)據(jù)庫中的數(shù)據(jù)
更新操作是數(shù)據(jù)庫操作中的另一個重要環(huán)節(jié)之一,在安卓系統(tǒng)中更新數(shù)據(jù)庫中的數(shù)據(jù)也有多種方式,比如更新特定數(shù)據(jù)等。
“`java
private void updateData(){
ContentValues values=new ContentValues();
values.put(“age”,20);
db.update(“Person”,values,”name=?”,new String[]{“Tom”});
}
“`
在以上代碼中,我們創(chuàng)建了一個ContentValues對象,并向其中添加了一個字段:age,然后調(diào)用db的update方法將名為Person的表中name字段等于Tom的數(shù)據(jù)的age字段值更新為20。
5.刪除數(shù)據(jù)庫中的數(shù)據(jù)
刪除操作也是數(shù)據(jù)庫操作中的重要環(huán)節(jié)之一,在安卓系統(tǒng)中刪除數(shù)據(jù)庫中的數(shù)據(jù)也有多種方式,比如刪除特定數(shù)據(jù)等。
“`java
private void deleteData(){
db.delete(“Person”,”name=?”,new String[]{“Tom”});
}
“`
在以上代碼中,我們調(diào)用db的delete方法,將名為Person的表中name字段等于Tom的數(shù)據(jù)刪除。
本文為大家介紹了如何在安卓系統(tǒng)中操作數(shù)據(jù)庫,包括創(chuàng)建數(shù)據(jù)庫、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)等方面,讀者可以根據(jù)自己的需要選擇合適的方法進行操作,從而達到存儲和讀取數(shù)據(jù)的目的。希望讀者在閱讀本文后能夠了解并掌握安卓系統(tǒng)中操作數(shù)據(jù)庫的方法。
相關問題拓展閱讀:
- 安卓連接數(shù)據(jù)庫問題,求解
安卓連接數(shù)據(jù)庫問題,求解
android的系統(tǒng)數(shù)據(jù)庫在調(diào)用的時候都封裝了 我們只需要寫where的condition,表結(jié)構(gòu)和標明對我們都是不透明的 這就對深入了解帶來了很多麻煩,即使有源碼查看起來也很費勁。
android使用的是sqlite數(shù)據(jù)庫,一般都是每個模塊都有一個.db文件,我們可以將系統(tǒng)里的.db文件拷出來在使用android tool中的sqlite3命令來操作和測試數(shù)據(jù)庫。
首先啟動模擬器或?qū)⑹謾C連接電腦
使用find命令將系統(tǒng)中所有的db文件找出來
adb shell find / -name ‘*.db’ -type f
/mnt/sdcard/openfeint/webui/manifest.db
/mnt/sdcard/dbms/DBMS.db
/data/system/accounts.db
/data/data/com.android.vending/databases/assets14.db
/data/data/com.android.vending/databases/suggestions.db
/data/data/com.android.vending/databases/webviewCache.db
/data/data/com.android.vending/databases/webview.db
/data/data/com.android.vending/databases/billing4.db
/data/data/com.android.providers.userdictionary/databases/user_dict.db
/data/data/com.android.providers.telephony/databases/mmss.db
/data/data/com.android.providers.telephony/databases/telephony.db
/data/data/com.android.providers.settings/databases/改磨settings.db
/data/data/com.android.providers.media/databases/internal.db
/data/data/com.android.providers.media/databases/external-bd717cb2.db
/data/data/com.android.providers.media/databases/external-5c2507fe.db
/data/data/com.android.launcher/databases/launcher.db
/data/data/com.example.android.apis/databases/webviewCache.db
/data/data/com.example.android.apis/databases/webview.db
/data/data/com.eclipsim.gpsstatus2/databases/google_ytics.db
/data/data/com.eclipsim.gpsstatus2/databases/webviewCache.db
/肆殲嘩data/data/com.eclipsim.gpsstatus2/databases/webview.db
/data/data/com.android.inputmethod.latin/databases/userbigram_dict.db
/data/data/com.android.inputmethod.latin/databases/auto_dict.db
/data/data/com.google.android.gsf/databases/talk.db
/data/data/裂行com.google.android.gsf/databases/webviewCache.db
/data/data/com.google.android.gsf/databases/webview.db
/data/data/com.google.android.gsf/databases/googlesettings.db
/data/data/com.google.android.gsf/databases/subscribedfeeds.db
/data/data/com.google.android.gsf/databases/gservices.db
/data/data/com.google.android.gsf/databases/gls.db
/data/data/com.google.android.googlequicksearchbox/databases/q-log.db
/data/data/com.google.android.gm/databases/downloads.db
/data/data/com.google.android.gm/databases/gmail.db
/data/data/com.google.android.apps.genie.geniewidget/databases/weather.db
/data/data/com.cooliris.media/databases/launcher.db
/data/data/com.cooliris.media/databases/picasa.db
/data/data/com.android.email/databases/EmailProviderBody.db
/data/data/com.android.email/databases/EmailProvider.db
/data/data/com.android.providers.drm/databases/drm.db
/data/data/com.getsetgames.megajump/databases/google_ytics.db
/data/data/com.getsetgames.megajump/databases/webviewCache.db
/data/data/com.getsetgames.megajump/databases/webview.db
/data/data/com.android.providers.downloads/databases/downloads.db
/data/data/com.rich.webviewtest/databases/webviewCache.db
/data/data/com.rich.webviewtest/databases/webview.db
/data/data/com.android.deskclock/databases/alarms.db
/data/data/com.android.providers.contacts/databases/contacts2.db
/data/data/com.android.providers.calendar/databases/calendar.db
/data/data/com.android.browser/app_icons/WebpageIcons.db
/data/data/com.android.browser/app_geolocation/CachedGeoposition.db
/data/data/com.android.browser/app_databases/Databases.db
/data/data/com.android.browser/app_appcache/ApplicationCache.db
/data/data/com.android.browser/databases/browser.db
/data/data/com.android.browser/databases/webviewCache.db
/data/data/com.android.browser/databases/webview.db
/data/data/com.android.bluetooth/databases/btopp.db
有了個db文件列表我們就可以把這些db 復制到電腦上進行操作了
以通訊錄數(shù)據(jù)庫為例執(zhí)行以下操作:
adb pull /data/data/com.android.providers.contacts/databases/contacts2.db F:/androidres/systemdb
KB/s (bytes in 0.158s)
F:/androidres/systemdb為任意本地目錄 不明白pull命令的查看adb help
用sqlite3打開這個文件
F:/androidres/systemdb>sqlite3 contacts2.db
SQLite version 3.6.22
Enter “.help” for instructions
Enter SQL statements terminated with a “;”
sqlite> .tables
_sync_statesettings
_sync_state_metadatastatus_updates
accountsv1_settings
activitiesview_contacts
agg_exceptions view_contacts_restricted
android_metadata view_data
calls view_data_restricted
contact_entities_viewview_groups
contact_entities_view_restricted view_raw_contacts
contactsview_raw_contacts_restricted
data view_v1_contact_methods
groupsview_v1_extensions
mimetypesview_v1_group_membership
name_lookupview_v1_groups
nickname_lookup view_v1_organizations
packagesview_v1_people
phone_lookupview_v1_phones
propertiesview_v1_photos
raw_contacts
安卓操作數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于安卓操作數(shù)據(jù)庫,【教程】如何在安卓系統(tǒng)中操作數(shù)據(jù)庫,安卓連接數(shù)據(jù)庫問題,求解的信息別忘了在本站進行查找喔。
成都網(wǎng)站營銷推廣找創(chuàng)新互聯(lián),全國分站站群網(wǎng)站搭建更好做SEO營銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎服務商,價格厚道。提供成都服務器托管租用、綿陽服務器租用托管、重慶服務器托管租用、貴陽服務器機房服務器托管租用。
文章名稱:【教程】如何在安卓系統(tǒng)中操作數(shù)據(jù)庫 (安卓操作數(shù)據(jù)庫)
本文URL:http://www.fisionsoft.com.cn/article/cdggcco.html


咨詢
建站咨詢
