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

為萬(wàn)安等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及萬(wàn)安網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、萬(wàn)安網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
1.創(chuàng)建數(shù)據(jù)庫(kù)
在安卓系統(tǒng)中創(chuàng)建數(shù)據(jù)庫(kù)有多種方式,其中最常用的方式是在應(yīng)用程序的MnActivity類中創(chuàng)建。在MnActivity中創(chuàng)建數(shù)據(jù)庫(kù)要分為兩個(gè)步驟:在onCreate方法中創(chuàng)建數(shù)據(jù)庫(kù),并在onUpgrade方法中更新數(shù)據(jù)庫(kù)。
(1)在onCreate方法中創(chuàng)建數(shù)據(jù)庫(kù)
“`java
public class MnActivity extends AppCompatActivity {
private static final String DB_NAME=”mydb”; //數(shù)據(jù)庫(kù)名稱
private static final int DB_VERSION=1; //數(shù)據(jù)庫(kù)版本號(hào)
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)建了一個(gè)DBHelper類用于繼承SQLiteOpenHelper類,然后重寫(xiě)onCreate方法,在該方法中創(chuàng)建數(shù)據(jù)庫(kù)并返回一個(gè)可寫(xiě)的數(shù)據(jù)庫(kù)對(duì)象。
DBHelper類的實(shí)現(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) {
}
}
“`
在以上代碼中,我們定義了一個(gè)CREATE_TABLE_SQL語(yǔ)句用于創(chuàng)建一個(gè)Person表,該表有三個(gè)字段:_id、name和age。
(2)在onUpgrade方法中更新數(shù)據(jù)庫(kù)
有時(shí)候,我們需要更新數(shù)據(jù)庫(kù),比如添加新的表或字段等。此時(shí),我們需要在DBHelper中重寫(xiě)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);
}
}
}
“`
在以上代碼中,我們定義了一個(gè)ALTER_TABLE_SQL語(yǔ)句用于在Person表中添加一個(gè)address字段,在onUpgrade方法中判斷如果當(dāng)前版本低于2,則執(zhí)行該更新操作。
2.向數(shù)據(jù)庫(kù)中插入數(shù)據(jù)
插入數(shù)據(jù)是數(shù)據(jù)庫(kù)操作中的重要環(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)建了一個(gè)ContentValues對(duì)象,并向其中添加了兩個(gè)字段:name和age,然后將該對(duì)象作為參數(shù)調(diào)用db的insert方法,將數(shù)據(jù)插入到名為Person的表中。如果在表中定義了自增長(zhǎng)字段,我們可以不用指定該字段的值,系統(tǒng)會(huì)自動(dòng)生成。
3.查詢數(shù)據(jù)庫(kù)中的數(shù)據(jù)
查詢操作是數(shù)據(jù)庫(kù)操作中另一個(gè)重要的環(huán)節(jié),我們?cè)诎沧肯到y(tǒng)中查詢數(shù)據(jù)庫(kù)中的數(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ù),然后通過(guò)Cursor類遍歷查詢結(jié)果,最后取出每個(gè)字段的值并輸出到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ù)時(shí)相同。
4.更新數(shù)據(jù)庫(kù)中的數(shù)據(jù)
更新操作是數(shù)據(jù)庫(kù)操作中的另一個(gè)重要環(huán)節(jié)之一,在安卓系統(tǒng)中更新數(shù)據(jù)庫(kù)中的數(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)建了一個(gè)ContentValues對(duì)象,并向其中添加了一個(gè)字段:age,然后調(diào)用db的update方法將名為Person的表中name字段等于Tom的數(shù)據(jù)的age字段值更新為20。
5.刪除數(shù)據(jù)庫(kù)中的數(shù)據(jù)
刪除操作也是數(shù)據(jù)庫(kù)操作中的重要環(huán)節(jié)之一,在安卓系統(tǒng)中刪除數(shù)據(jù)庫(kù)中的數(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ù)庫(kù),包括創(chuàng)建數(shù)據(jù)庫(kù)、插入數(shù)據(jù)、查詢數(shù)據(jù)、更新數(shù)據(jù)和刪除數(shù)據(jù)等方面,讀者可以根據(jù)自己的需要選擇合適的方法進(jìn)行操作,從而達(dá)到存儲(chǔ)和讀取數(shù)據(jù)的目的。希望讀者在閱讀本文后能夠了解并掌握安卓系統(tǒng)中操作數(shù)據(jù)庫(kù)的方法。
相關(guān)問(wèn)題拓展閱讀:
- 安卓連接數(shù)據(jù)庫(kù)問(wèn)題,求解
安卓連接數(shù)據(jù)庫(kù)問(wèn)題,求解
android的系統(tǒng)數(shù)據(jù)庫(kù)在調(diào)用的時(shí)候都封裝了 我們只需要寫(xiě)where的condition,表結(jié)構(gòu)和標(biāo)明對(duì)我們都是不透明的 這就對(duì)深入了解帶來(lái)了很多麻煩,即使有源碼查看起來(lái)也很費(fèi)勁。
android使用的是sqlite數(shù)據(jù)庫(kù),一般都是每個(gè)模塊都有一個(gè).db文件,我們可以將系統(tǒng)里的.db文件拷出來(lái)在使用android tool中的sqlite3命令來(lái)操作和測(cè)試數(shù)據(jù)庫(kù)。
首先啟動(dòng)模擬器或?qū)⑹謾C(jī)連接電腦
使用find命令將系統(tǒng)中所有的db文件找出來(lái)
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
有了個(gè)db文件列表我們就可以把這些db 復(fù)制到電腦上進(jìn)行操作了
以通訊錄數(shù)據(jù)庫(kù)為例執(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打開(kāi)這個(gè)文件
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ù)庫(kù)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于安卓操作數(shù)據(jù)庫(kù),【教程】如何在安卓系統(tǒng)中操作數(shù)據(jù)庫(kù),安卓連接數(shù)據(jù)庫(kù)問(wèn)題,求解的信息別忘了在本站進(jìn)行查找喔。
成都網(wǎng)站營(yíng)銷推廣找創(chuàng)新互聯(lián),全國(guó)分站站群網(wǎng)站搭建更好做SEO營(yíng)銷。
創(chuàng)新互聯(lián)(www.cdcxhl.com)四川成都IDC基礎(chǔ)服務(wù)商,價(jià)格厚道。提供成都服務(wù)器托管租用、綿陽(yáng)服務(wù)器租用托管、重慶服務(wù)器托管租用、貴陽(yáng)服務(wù)器機(jī)房服務(wù)器托管租用。
網(wǎng)頁(yè)題目:【教程】如何在安卓系統(tǒng)中操作數(shù)據(jù)庫(kù) (安卓操作數(shù)據(jù)庫(kù))
標(biāo)題URL:http://www.5511xx.com/article/cdggcco.html


咨詢
建站咨詢
