Android数据库SQLite的简单示例.docx
- 文档编号:11472731
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:26
- 大小:286.04KB
Android数据库SQLite的简单示例.docx
《Android数据库SQLite的简单示例.docx》由会员分享,可在线阅读,更多相关《Android数据库SQLite的简单示例.docx(26页珍藏版)》请在冰豆网上搜索。
Android数据库SQLite的简单示例
Android数据库SQLite的使用示例
Android提供了三种数据存储方式,第一种是文件存储;第二种是SharedPreferences存储;第三种就是数据库SQLiteDatabase存储。
文件存储我就不用多说了,而SharedPreferences可以存取简单的数据(int,double,float.etc),它经常用于数据缓存,因为它读取存储简单。
详细可以参见本系列。
Android高手进阶教程(七)之----Android中Preferences的使用!
今天我们将讲一下SQLiteDatabase的使用。
而掌握SqliteDatabase,将会我们接下来掌握ContentProvider打下良好的基石。
为了让大家更好的掌握,我们手把手完成该节的Demo。
第一步:
新建一个Android工程,命名为SQLiteDatabaseDemo.
第二步:
创建一个新的类BooksDB.java这个类要继承于android.database.sqlite.SQLiteOpenHelper抽象类,我们要实现其中两个方法:
onCreate(),onUpdate.具体代码如下:
01
packagecom.android.tutor;
02
importandroid.content.ContentValues;
03
importandroid.content.Context;
04
importandroid.database.Cursor;
05
importandroid.database.sqlite.SQLiteDatabase;
06
importandroid.database.sqlite.SQLiteOpenHelper;
07
publicclassBooksDBextendsSQLiteOpenHelper{
08
privatefinalstaticStringDATABASE_NAME="BOOKS.db";
09
privatefinalstaticintDATABASE_VERSION=1;
10
privatefinalstaticStringTABLE_NAME="books_table";
11
publicfinalstaticStringBOOK_ID="book_id";
12
publicfinalstaticStringBOOK_NAME="book_name";
13
publicfinalstaticStringBOOK_AUTHOR="book_author";
14
15
publicBooksDB(Contextcontext){
16
//TODOAuto-generatedconstructorstub
17
super(context,DATABASE_NAME,null,DATABASE_VERSION);
18
}
19
//创建table
20
@Override
21
publicvoidonCreate(SQLiteDatabasedb){
22
Stringsql="CREATETABLE"+TABLE_NAME+"("+BOOK_ID
23
+"INTEGERprimarykeyautoincrement,"+BOOK_NAME+"text,"+BOOK_AUTHOR+"text);";
24
db.execSQL(sql);
25
}
26
@Override
27
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
28
Stringsql="DROPTABLEIFEXISTS"+TABLE_NAME;
29
db.execSQL(sql);
30
onCreate(db);
31
}
32
33
publicCursorselect(){
34
SQLiteDatabasedb=this.getReadableDatabase();
35
Cursorcursor=db
36
.query(TABLE_NAME,null,null,null,null,null,null);
37
returncursor;
38
}
39
//增加操作
40
publiclonginsert(Stringbookname,Stringauthor)
41
{
42
SQLiteDatabasedb=this.getWritableDatabase();
43
/*ContentValues*/
44
ContentValuescv=newContentValues();
45
cv.put(BOOK_NAME,bookname);
46
cv.put(BOOK_AUTHOR,author);
47
longrow=db.insert(TABLE_NAME,null,cv);
48
returnrow;
49
}
50
//删除操作
51
publicvoiddelete(intid)
52
{
53
SQLiteDatabasedb=this.getWritableDatabase();
54
Stringwhere=BOOK_ID+"=?
";
55
String[]whereValue={Integer.toString(id)};
56
db.delete(TABLE_NAME,where,whereValue);
57
}
58
//修改操作
59
publicvoidupdate(intid,Stringbookname,Stringauthor)
60
{
61
SQLiteDatabasedb=this.getWritableDatabase();
62
Stringwhere=BOOK_ID+"=?
";
63
String[]whereValue={Integer.toString(id)};
64
65
ContentValuescv=newContentValues();
66
cv.put(BOOK_NAME,bookname);
67
cv.put(BOOK_AUTHOR,author);
68
db.update(TABLE_NAME,cv,where,whereValue);
69
}
70
}
第三步:
修改main.xml布局如下,由两个EditText和一个ListView组成,代码如下:
01
xmlversion="1.0"encoding="utf-8"?
>
02
android=" 03 04 android: orientation="vertical" 05 android: layout_width="fill_parent" 06 android: layout_height="fill_parent" 07 > 08 09 android: id="@+id/bookname" 10 android: layout_width="fill_parent" 11 android: layout_height="wrap_content" 12 13 > 14 15 16 android: id="@+id/author" 17 android: layout_width="fill_parent" 18 android: layout_height="wrap_content" 19 > 20 21 22 android: id="@+id/bookslist" 23 24 android: layout_width="fill_parent" 25 android: layout_height="wrap_content" 26 > 27 28 第四步: 修改SQLiteDatabaseDemo.java代码如下: 001 packagecom.android.tutor; 002 importandroid.app.Activity; 003 importandroid.content.Context; 004 importandroid.database.Cursor; 005 importandroid.os.Bundle; 006 importandroid.view.Menu; 007 importandroid.view.MenuItem; 008 importandroid.view.View; 009 importandroid.view.ViewGroup; 010 importandroid.widget.AdapterView; 011 importandroid.widget.BaseAdapter; 012 importandroid.widget.EditText; 013 importandroid.widget.ListView; 014 importandroid.widget.TextView; 015 importandroid.widget.Toast; 016 publicclassSQLiteDatabaseDemoextendsActivityimplementsAdapterView.OnItemClickListener{ 017 privateBooksDBmBooksDB; 018 privateCursormCursor; 019 privateEditTextBookName; 020 privateEditTextBookAuthor; 021 privateListViewBooksList; 022 023 privateintBOOK_ID=0; 024 protectedfinalstaticintMENU_ADD=Menu.FIRST; 025 protectedfinalstaticintMENU_DELETE=Menu.FIRST+1; 026 protectedfinalstaticintMENU_UPDATE=Menu.FIRST+2; 027 028 publicvoidonCreate(BundlesavedInstanceState){ 029 super.onCreate(savedInstanceState); 030 setContentView(R.layout.main); 031 setUpViews(); 032 } 033 034 publicvoidsetUpViews(){ 035 mBooksDB=newBooksDB(this); 036 mCursor=mBooksDB.select(); 037 038 BookName=(EditText)findViewById(R.id.bookname); 039 BookAuthor=(EditText)findViewById(R.id.author); 040 BooksList=(ListView)findViewById(R.id.bookslist); 041 042 BooksList.setAdapter(newBooksListAdapter(this,mCursor)); 043 BooksList.setOnItemClickListener(this); 044 } 045 046 @Override 047 publicbooleanonCreateOptionsMenu(Menumenu){ 048 super.onCreateOptionsMenu(menu); 049 050 menu.add(Menu.NONE,MENU_ADD,0,"ADD"); 051 menu.add(Menu.NONE,MENU_DELETE,0,"DELETE"); 052 menu.add(Menu.NONE,MENU_DELETE,0,"UPDATE"); 053 returntrue; 054 } 055 056 publicbooleanonOptionsItemSelected(MenuItemitem) 057 { 058 super.onOptionsItemSelected(item); 059 switch(item.getItemId()) 060 { 061 caseMENU_ADD: 062 add(); 063 break; 064 caseMENU_DELETE: 065 delete(); 066 break; 067 caseMENU_UPDATE: 068 update(); 069 break; 070 } 071 returntrue; 072 } 073 074 publicvoidadd(){ 075 Stringbookname=BookName.getText().toString(); 076 Stringauthor=BookAuthor.getText().toString(); 077 //书名和作者都不能为空,或者退出 078 if(bookname.equals("")||author.equals("")){ 079 return; 080 } 081 mBooksDB.insert(bookname,author); 082 mCursor.requery(); 083 BooksList.invalidateViews(); 084 BookName.setText(""); 085 BookAuthor.setText(""); 086 Toast.makeText(this,"AddSuccessed! ",Toast.LENGTH_SHORT).show(); 087 } 088 089 publicvoiddelete(){ 090 if(BOOK_ID==0){ 091 return; 092 } 093 mBooksDB.delete(BOOK_ID); 094 mCursor.requery(); 095 BooksList.invalidateViews(); 096 BookName.setText(""); 097 BookAuthor.setText(""); 098 Toast.makeText(this,"DeleteSuccessed! ",Toast.LENGTH_SHORT).show(); 099 } 100 101 publicvoidupdate(){ 102 Stringbookname=BookName.getText().toString(); 103 Stringauthor=BookAuthor.getText().toString(); 104 //书名和作者都不能为空,或者退出 105 if(bookname.equals("")||author.equals("")){ 106 return; 107 } 108 mBooksDB.update(BOOK_ID,bookname,author); 109 mCursor.requery(); 110 BooksList.invalidateViews(); 111 BookName.setText(""); 112 BookAuthor.setText(""); 113 Toast.makeText(this,"UpdateSuccessed! ",Toast.LENGTH_SHORT).show(); 114 } 115 116 @Override 117 publicvoidonItemClick(AdapterView >parent,Viewview,intposition,longid){ 118 119 mCursor.moveToPosition(position); 120 BOOK_ID=mCursor.getInt(0); 121 BookName.setText(mCursor.getString (1)); 122 BookAuthor.setText(mCursor.getString (2)); 123 124 } 125 126 publicclassBooksListAdapterextendsBaseAdapter{ 127 privateContextmContext; 128 privateCursormCursor; 129 publicBooksListAdapter(Contextcontext,Cursorcursor){ 130 131 mContext=context; 132 mCursor=cursor; 133 } 134 @Override 135 publicintgetCount(){ 136 returnmCursor.getCount(); 137 } 138 @Override 139 publicObjectgetItem(intposition){ 140 returnnull; 141 } 142 @Override 143 publiclonggetItemId(intposition){ 144 return0; 145 } 146 @Override 147 publicViewgetView(intposition,ViewconvertView,ViewGroupparent){ 148 TextViewmTextView=newTextView(mContext); 149 mCursor.moveToPosition(position); 150 mTextView.setText(mCursor.getString (1)+"___"+mCursor.getString (2)); 151 returnmTextView; 152 } 153 154 } 155 } 第五步: 运行程序效果如下: 第六步: 查看我们所建的数据库。 有两种方法: 第一种用命令查看:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 数据库 SQLite 简单 示例