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
}
第五步:
运行程序效果如下:
第六步:
查看我们所建的数据库。
有两种方法:
第一种用命令查看: