【教程】如何在安卓系统中操作数据库 (安卓操作数据库)

随着智能手机的普及,越来越多的应用程序需要使用数据存储,而数据库成为了存储数据的重要手段之一。在安卓系统中,我们可以使用SQLite数据库进行数据存储和操作。本文将为大家介绍如何在安卓系统中操作数据库。

1.创建数据库

在安卓系统中创建数据库有多种方式,其中最常用的方式是在应用程序的MnActivity类中创建。在MnActivity中创建数据库要分为两个步骤:在onCreate方法中创建数据库,并在onUpgrade方法中更新数据库。

(1)在onCreate方法中创建数据库

“`java

public class MnActivity extends AppCompatActivity {

private static final String DB_NAME=”mydb”; //数据库名称

private static final int DB_VERSION=1; //数据库版本号

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();

}

}

“`

在以上代码中,我们创建了一个DBHelper类用于继承SQLiteOpenHelper类,然后重写onCreate方法,在该方法中创建数据库并返回一个可写的数据库对象。

DBHelper类的实现如下:

“`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语句用于创建一个Person表,该表有三个字段:_id、name和age。

(2)在onUpgrade方法中更新数据库

有时候,我们需要更新数据库,比如添加新的表或字段等。此时,我们需要在DBHelper中重写onUpgrade方法,在该方法中执行更新操作。

“`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,则执行该更新操作。

2.向数据库中插入数据

插入数据是数据库操作中的重要环节之一,在安卓系统中插入数据有多种方式,其中最常用的方式是使用ContentValues类。

“`java

private void insertData(){

ContentValues values=new ContentValues();

values.put(“name”,”Tom”);

values.put(“age”,18);

db.insert(“Person”,null,values);

}

“`

在以上代码中,我们创建了一个ContentValues对象,并向其中添加了两个字段:name和age,然后将该对象作为参数调用db的insert方法,将数据插入到名为Person的表中。如果在表中定义了自增长字段,我们可以不用指定该字段的值,系统会自动生成。

3.查询数据库中的数据

查询操作是数据库操作中另一个重要的环节,我们在安卓系统中查询数据库中的数据也有多种方式,比如查询表中的所有数据和查询特定数据等。

(1)查询表中的所有数据

“`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();

}

“`

在以上代码中,我们先调用db的query方法查询Person表中的所有数据,然后通过Cursor类遍历查询结果,最后取出每个字段的值并输出到Log中。

(2)查询特定数据

“`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();

}

“`

在以上代码中,我们调用db的query方法查询Person表中name字段等于Tom的数据,其他参数的用法与查询所有数据时相同。

4.更新数据库中的数据

更新操作是数据库操作中的另一个重要环节之一,在安卓系统中更新数据库中的数据也有多种方式,比如更新特定数据等。

“`java

private void updateData(){

ContentValues values=new ContentValues();

values.put(“age”,20);

db.update(“Person”,values,”name=?”,new String[]{“Tom”});

}

“`

在以上代码中,我们创建了一个ContentValues对象,并向其中添加了一个字段:age,然后调用db的update方法将名为Person的表中name字段等于Tom的数据的age字段值更新为20。

5.删除数据库中的数据

删除操作也是数据库操作中的重要环节之一,在安卓系统中删除数据库中的数据也有多种方式,比如删除特定数据等。

“`java

private void deleteData(){

db.delete(“Person”,”name=?”,new String[]{“Tom”});

}

“`

在以上代码中,我们调用db的delete方法,将名为Person的表中name字段等于Tom的数据删除。

本文为大家介绍了如何在安卓系统中操作数据库,包括创建数据库、插入数据、查询数据、更新数据和删除数据等方面,读者可以根据自己的需要选择合适的方法进行操作,从而达到存储和读取数据的目的。希望读者在阅读本文后能够了解并掌握安卓系统中操作数据库的方法。

相关问题拓展阅读:

安卓连接数据库问题,求解

android的系统数据库在调用的时候都封装了 我们只需要写where的condition,表结构和标明对我们都是不透明的 这就对深入了解带来了很多麻烦,即使有源码查看起来也很费劲。

android使用的是sqlite数据库,一般都是每个模块都有一个.db文件,我们可以将系统里的.db文件拷出来在使用android tool中的sqlite3命令来操作和测试数据库。

首先启动模拟器或将手机连接电脑

使用find命令将系统中所有的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 复制到电脑上进行操作了

以通讯录数据库为例执行以下操作:

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

安卓操作数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于安卓操作数据库,【教程】如何在安卓系统中操作数据库,安卓连接数据库问题,求解的信息别忘了在本站进行查找喔。


数据运维技术 » 【教程】如何在安卓系统中操作数据库 (安卓操作数据库)