Android创建和使用数据库详细指南Word文件下载.docx
《Android创建和使用数据库详细指南Word文件下载.docx》由会员分享,可在线阅读,更多相关《Android创建和使用数据库详细指南Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
![Android创建和使用数据库详细指南Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-12/15/c7cfd6e6-baad-439f-bd02-fcb52bd4734b/c7cfd6e6-baad-439f-bd02-fcb52bd4734b1.gif)
importandroid.content.Context;
importandroid.database.Cursor;
importandroid.database.SQLException;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
importandroid.util.Log;
publicclassDBAdapter
{
}
接下来创建一个数据库,取名为bookstitles,字段如图2所示。
图2数据库字段
在DBAdapter.java文件中,定义清单1中的常量。
清单1定义DBAdapter.java文件中的常量
packagenet.learn2develop.Database;
publicstaticfinalStringKEY_ROWID="
_id"
;
publicstaticfinalStringKEY_ISBN="
isbn"
publicstaticfinalStringKEY_TITLE="
title"
publicstaticfinalStringKEY_PUBLISHER="
publisher"
privatestaticfinalStringTAG="
DBAdapter"
privatestaticfinalStringDATABASE_NAME="
books"
privatestaticfinalStringDATABASE_TABLE="
titles"
privatestaticfinalintDATABASE_VERSION=1;
privatestaticfinalStringDATABASE_CREATE=
"
createtabletitles(_idintegerprimarykeyautoincrement,"
+"
isbntextnotnull,titletextnotnull,"
publishertextnotnull);
privatefinalContextcontext;
DATABASE_CREATE常量包括创建titles表的SQL语句。
在DBAdapter类中,你可以扩展SQLiteOpenHelper类,它是一个Android辅助类,主要用于数据库创建和版本管理。
实际上,你可以覆盖onCreate()和onUpgrade()方法,如清单2所示。
清单2在DBAdapter类中,扩展SQLiteOpenHelper类覆盖onCreate()和onUpgrade()方法
packagenet.learn2develop.Database;
privateDatabaseHelperDBHelper;
privateSQLiteDatabasedb;
publicDBAdapter(Contextctx)
this.context=ctx;
DBHelper=newDatabaseHelper(context);
privatestaticclassDatabaseHelperextendsSQLiteOpenHelper
DatabaseHelper(Contextcontext)
super(context,DATABASE_NAME,null,DATABASE_VERSION);
@Override
publicvoidonCreate(SQLiteDatabasedb)
db.execSQL(DATABASE_CREATE);
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,
intnewVersion)
Log.w(TAG,"
Upgradingdatabasefromversion"
+oldVersion
to"
+newVersion+"
whichwilldestroyallolddata"
);
db.execSQL("
DROPTABLEIFEXISTStitles"
onCreate(db);
onCreate()方法创建一个新的数据库,onUpgrade()方法用于升级数据库,这可以通过检查DATABASE_VERSION常量定义的值来实现,对于onUpgrade()方法而言,只不过是简单地删除表,然后在创建表而已。
现在你可以定义不同的方法来打开和关闭数据库,如清单3中的添加/编辑/删除/行的函数。
清单3定义打开和关闭数据库以及增加/编辑/删除表中行的方法
//...
//---打开数据库---
publicDBAdapteropen()throwsSQLException
db=DBHelper.getWritableDatabase();
returnthis;
//---关闭数据库---
publicvoidclose()
DBHelper.close();
//---向数据库插入一个标题---
publiclonginsertTitle(Stringisbn,Stringtitle,Stringpublisher)
ContentValuesinitialValues=newContentValues();
initialValues.put(KEY_ISBN,isbn);
initialValues.put(KEY_TITLE,title);
initialValues.put(KEY_PUBLISHER,publisher);
returndb.insert(DATABASE_TABLE,null,initialValues);
//---删除一个指定的标题---
publicbooleandeleteTitle(longrowId)
returndb.delete(DATABASE_TABLE,KEY_ROWID+"
="
+rowId,null)>
0;
//---检索所有标题---
publicCursorgetAllTitles()
returndb.query(DATABASE_TABLE,newString[]{
KEY_ROWID,
KEY_ISBN,
KEY_TITLE,
KEY_PUBLISHER},
null,
null);
//---检索一个指定的标题---
publicCursorgetTitle(longrowId)throwsSQLException
CursormCursor=
db.query(true,DATABASE_TABLE,newString[]{
KEY_PUBLISHER
},
KEY_ROWID+"
+rowId,
if(mCursor!
=null){
mCursor.moveToFirst();
returnmCursor;
//---更新一个标题---
publicbooleanupdateTitle(longrowId,Stringisbn,
Stringtitle,Stringpublisher)
ContentValuesargs=newContentValues();
args.put(KEY_ISBN,isbn);
args.put(KEY_TITLE,title);
args.put(KEY_PUBLISHER,publisher);
returndb.update(DATABASE_TABLE,args,
注意Android使用Cursor类返回一个需要的值,Cursor作为一个指针从数据库查询返回结果集,使用Cursor允许Android更有效地管理它们需要的行和列,你使用ContentValues对象存储键/值对,它的put()方法允许你插入不同数据类型的键值。
清单4显示了完整的DBAdapter.java源代码。
清单4DBAdapter.java完整源代码
//---向数据库中插入一个标题---
//---删除一个指定标题---
returndb.delete(DATABASE_TABLE,KEY_ROWID+
//---检索一个指定标题---
3使用数据库
现在你已经可以利用创建的辅助类来使用数据库了,在DatabaseActivity.java文件中,创建一个DBAdapter类的实例:
importandroid.app.Activity;
importandroid.os.Bundle;
publicclassDatabaseActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DBAdapterdb=newDBAdapter(this);
4增加一个标题
如果想在titles表中增加一个标题,可以使用DBAdapter类的insertTitle()方法:
@Override
//---add2titles---
db.open();
longid;
id=db.insertTitle(
0470285818"
C#2008Programmer'
sReference"
Wrox"
047017661X"
ProfessionalWindowsVistaGadgetsProgramming"
db.cl