实例: 会员信息管理
功能:1.查看数据库 2.清空数据库 3.增加会员 4.删除会员 5.更新会员 6.查找会员
数据库基类 – DBHelper.java
01
|
package com.wirelessqa.sqlite;
|
03
|
import android.content.Context;
|
04
android.database.sqlite.sqliteDatabase;
|
05
|
android.database.sqlite.sqliteOpenHelper;
|
06
android.util.Log;
|
08
/**
|
09
|
* DBHelper继承了sqliteOpenHelper,作为维护和管理数据库的基类
|
10
* @author bixiaopeng 2013-2-16 下午3:05:52
|
12
public class DBHelper extends sqliteOpenHelper{
|
13
|
14
|
static final String DB_NAME = "wirelessqa.db" ;
|
15
|
String DB_TABLE_NAME = "info" ;
|
16
private final int DB_VERSION= 1 17
|
public DBHelper(Context context) {
|
18
|
20
super (context,DB_NAME, null ,DB_VERSION);
|
22
|
24
void onCreate(sqliteDatabase db) {
|
26
db.execsql( "CREATE TABLE IF NOT EXISTS info" +
|
27
|
"(_id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR,age INTEGER,website STRING,weibo STRING)" );
|
28
Log.i(WirelessQA.TAG, "create table" );
|
29
|
30
|
//数据库第一次创建时onCreate方法会被调用,我们可以执行创建表的语句,当系统发现版本变化之后,会调用onUpgrade方法,我们可以执行修改表结构等语句
|
31
|
32
|
onUpgrade(sqliteDatabase db,monospace!important; font-size:1em!important; border:0px!important; line-height:1.1em!important; margin:0px!important; outline:0px!important; float:none!important; vertical-align:baseline!important; position:static!important; left:auto!important; top:auto!important; right:auto!important; bottom:auto!important; height:auto!important; width:auto!important; min-height:auto!important">oldVersion,monospace!important; font-size:1em!important; border:0px!important; line-height:1.1em!important; margin:0px!important; outline:0px!important; float:none!important; vertical-align:baseline!important; position:static!important; left:auto!important; top:auto!important; right:auto!important; bottom:auto!important; height:auto!important; width:auto!important; min-height:auto!important">newVersion) {
|
34
//db.execsql("ALTER TABLE info ADD COLUMN other STRING");
|
35
|
Log.i( "WIRELESSQA" "update sqlite " +oldVersion+ "---->" +newVersion);
|
36
}
|
数据库业务操作 – DBManager.java
001
002
|
003
|
java.util.ArrayList;
|
004
java.util.List;
|
005
|
006
|
android.content.ContentValues;
|
007
|
008
|
android.database.Cursor;
|
009
|
android.database.sqlite.sqliteDatabase;
|
010
011
|
012
|
013
|
*DBManager是建立在DBHelper之上,封装了常用的业务方法
|
014
* @author bixiaopeng 2013-2-16 下午3:06:26
|
017
|
018
|
private DBHelper helper;
|
020
021
|
DBManager(Context context){
|
022
helper = new DBHelper(context);
|
023
|
db = helper.getWritableDatabase();
|
024
025
|
026
|
027
|
* 向表info中增加一个成员信息
|
028
*
|
030
*/
|
031
|
add(List<MemberInfo> memberInfo) {
|
032
db.beginTransaction();
|
034
for (MemberInfo info : memberInfo) {
|
035
|
"------add memberInfo----------" 036
|
"/" + info.age + + info.website + + info.weibo);
|
038
"INSERT INTO info VALUES(null,?,?)"Object[] { info.name,info.age,info.website,
|
040
041
|
db.setTransactionSuccessful();
|
042
} finally {
|
044
045
|
046
|
047
|
/**
|
048
* @param _id
|
050
* @param age
|
052
* @param weibo
|
053
|
054
|
add(_id,monospace!important; font-size:1em!important; border:0px!important; line-height:1.1em!important; margin:0px!important; outline:0px!important; float:none!important; vertical-align:baseline!important; position:static!important; left:auto!important; top:auto!important; right:auto!important; bottom:auto!important; height:auto!important; width:auto!important; min-height:auto!important">age,String website,String weibo) {
|
055
|
"------add data----------"056
|
ContentValues cv = ContentValues();
|
057
|
// cv.put("_id",_id);
|
058
cv.put("name"
059
|
"age"060
|
"website"
061
|
"weibo"062
|
db.insert(DBHelper.DB_TABLE_NAME,cv);
|
063
|
+ age + + website + + weibo);
|
064
|
065
|
066
|
067
|
* 通过name来删除数据
|
068
|
069
|
070
|
071
|
delData(String name) {
|
072
// Execsql("DELETE FROM info WHERE name ="+"'"+name+"'");
|
073
|
String[] args = { name };
|
074
db.delete(DBHelper.DB_TABLE_NAME,monospace!important; font-size:1em!important; color:blue!important; border:0px!important; line-height:1.1em!important; margin:0px!important; outline:0px!important; float:none!important; vertical-align:baseline!important; position:static!important; left:auto!important; top:auto!important; right:auto!important; bottom:auto!important; height:auto!important; width:auto!important; min-height:auto!important">"name=?"
075
|
"delete data by " + name);
|
076
|
077
|
078
|
079
|
080
|
* 清空数据
|
083
|
Execsql("DELETE FROM info" 084
|
"clear data"085
|
086
|
087
|
088
|
* 通过名字查询信息,返回所有的数据
|
090
* @param name
|
091
|
092
|
ArrayList<MemberInfo> searchData(String name) {
|
093
|
String sql = "SELECT * FROM info WHERE name =" + "'" + name + "'" 094
|
return ExecsqlForMemberInfo(sql);
|
095
|
096
|
097
|
ArrayList<MemberInfo> searchAllData() {
|
098
"SELECT * FROM info"099
|
ExecsqlForMemberInfo(sql);
|
100
101
|
102
|
103
|
* 通过名字来修改值
|
104
105
|
* @param raw
|
106
* @param rawValue
|
108
109
|
updateData(String raw,String rawValue,String whereName) {
|
110
"UPDATE info SET " + raw + " =" " " + rawValue + " WHERE name =" + whereName
|
114
115
|
116
|
117
|
* 执行sql命令返回list
|
120
* @return
|
121
|
122
|
ArrayList<MemberInfo> ExecsqlForMemberInfo(String sql) {
|
123
|
ArrayList<MemberInfo> list = ArrayList<MemberInfo>();
|
124
Cursor c = ExecsqlForCursor(sql);
|
125
|
while (c.moveToNext()) {
|
126
MemberInfo info = MemberInfo();
|
127
|
info._id = c.getInt(c.getColumnIndex("_id" ));
|
128
info.name = c.getString(c.getColumnIndex());
|
129
|
info.age = c.getInt(c.getColumnIndex(130
|
info.website = c.getString(c.getColumnIndex(131
|
info.weibo = c.getString(c.getColumnIndex(132
|
list.add(info);
|
136
137
|
138
|
139
|
* 执行一个sql语句
|
140
141
|
142
|
143
|
Execsql(String sql) {
|
147
|
catch (Exception e) {
|
148
Log.e("Execsql Exception"
150
|
151
|
152
|
153
|
154
|
* 执行sql,返回一个游标
|