随着智能手机的普及,越来越多的应用程序需要使用数据存储,而数据库成为了存储数据的重要手段之一。在安卓系统中,我们可以使用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
安卓操作数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于安卓操作数据库,【教程】如何在安卓系统中操作数据库,安卓连接数据库问题,求解的信息别忘了在本站进行查找喔。
来源地址:【教程】如何在安卓系统中操作数据库 (安卓操作数据库)
转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:www.88531.cn资享网,谢谢!^^