1、DBAdapter类:
1
package
com.cnzcom.android.quickdial;
2
3
import
android.content.ContentValues;
4
import
android.content.Context;
5
import
android.database.Cursor;
6
import
android.database.SQLException;
7
import
android.database.sqlite.SQLiteDatabase;
8
import
android.database.sqlite.SQLiteOpenHelper;
9
import
android.util.Log;
10
11
/**
12
*
13
*
@author
zhangjie
14
*
15
* 数据库相关操作的类
16
*/
17
public
class
DBAdapter {
18
/**
19
* 数据库名
20
*/
21
private
static
final
String DATABASE_NAME
=
"
quickdial.db
"
;
22
23
/**
24
* 数据表名
25
*/
26
private
static
final
String DATABASE_TABLE
=
"
quickdial
"
;
27
28
/**
29
* 数据库版本
30
*/
31
private
static
final
int
DATABASE_VERSION
=
1
;
32
33
/**
34
* key_id :主键
35
*/
36
@SuppressWarnings(
"
unused
"
)
37
private
static
final
String KEY_ID
=
"
key_id
"
;
38
39
/**
40
* position :位置信息,表示数据是第几项
41
*/
42
private
static
final
String POSITION
=
"
position
"
;
43
44
/**
45
* name :姓名
46
*/
47
private
static
final
String NAME
=
"
name
"
;
48
49
/**
50
* phone_number :电话号码
51
*/
52
private
static
final
String PHONE_NUMBER
=
"
phone_number
"
;
53
54
/**
55
* ip :是否ip播出
56
*/
57
private
static
final
String IP
=
"
ip
"
;
58
59
/**
60
*
61
*/
62
private
static
final
String DATABASE_CREATE
=
63
"
create table quickdial (key_id INTEGER PRIMARY KEY,
"
64
+
"
position INTEGER,
"
65
+
"
name TEXT,
"
66
+
"
phone_number TEXT,
"
67
+
"
ip INTEGER
"
68
+
"
);
"
;
69
70
/**
71
*
72
*/
73
private
final
Context context;
74
75
/**
76
*
77
*/
78
private
DatabaseHelper DBHelper;
79
80
/**
81
*
82
*/
83
private
SQLiteDatabase db;
84
85
public
DBAdapter(Context ctx) {
86
context
=
ctx;
87
DBHelper
=
new
DatabaseHelper(context);
88
89
90
}
91
92
private
static
class
DatabaseHelper
extends
SQLiteOpenHelper {
93
public
DatabaseHelper(Context context) {
94
super
(context, DATABASE_NAME,
null
, DATABASE_VERSION);
95
}
96
97
@Override
98
public
void
onCreate(SQLiteDatabase db) {
99
//
TODO Auto-generated method stub
100
db.execSQL(DATABASE_CREATE);
101
}
102
103
@Override
104
public
void
onUpgrade(SQLiteDatabase db,
int
oldVersion,
int
newVersion) {
105
//
TODO Auto-generated method stub
106
db.execSQL(
"
DROP TABLE IF EXISTS
"
+
DATABASE_TABLE);
107
onCreate(db);
108
}
109
110
}
111
112
/**
113
* 打开数据库
114
*
@return
115
*
@throws
SQLException
116
*/
117
public
SQLiteDatabase open()
throws
SQLException
118
{
119
db
=
DBHelper.getWritableDatabase();
120
121
Cursor cursor
=
getAll();
122
123
if
(cursor.getCount()
==
0
) {
124
125
Log.e(
"
数据库为空
"
,
"
插入数据
"
);
126
/**
127
* 先使用假数据初始化数据库
128
*/
129
for
(
int
i
=
0
; i
<
10
; i
++
) {
130
insert(i,
""
,
""
,
0
);
131
}
132
}
else
{
133
Log.e(
"
数据库不为空
"
,
"
读取数据
"
);
134
}
135
cursor.close();
136
137
return
db;
138
}
139
140
/**
141
* 关闭数据库
142
*/
143
public
void
close()
144
{
145
DBHelper.close();
146
}
147
148
/**
149
* 向数据库中插入数据
150
*/
151
152
public
long
insert(
int
position, String name, String phone_number,
int
ip) {
153
154
ContentValues initialValues
=
new
ContentValues();
155
initialValues.put(POSITION, position);
156
initialValues.put(NAME, name);
157
initialValues.put(PHONE_NUMBER, phone_number);
158
initialValues.put(IP, ip);
159
160
return
db.insert(DATABASE_TABLE,
null
, initialValues);
161
}
162
163
/**
164
* 删除数据,其实不是真正意义上的删除,而是将name = ""、phone_number = ""、ip = 0
165
*/
166
public
boolean
delete(
int
position) {
167
168
ContentValues initialValues
=
new
ContentValues();
169
initialValues.put(POSITION, position);
170
initialValues.put(NAME,
""
);
171
initialValues.put(PHONE_NUMBER,
""
);
172
initialValues.put(IP,
0
);
173
174
return
db.update(DATABASE_TABLE, initialValues, POSITION
+
"
=
"
+
position,
null
)
>
0
;
175
176
//
return db.delete(DATABASE_TABLE, POSITION + "=" + position, null) > 0;
177
}
178
179
/**
180
* 更改数据
181
*/
182
public
boolean
update(
int
position, String name, String phone_number,
int
ip) {
183
184
ContentValues initialValues
=
new
ContentValues();
185
//
initialValues.put(POSITION, position);
186
initialValues.put(NAME, name);
187
initialValues.put(PHONE_NUMBER, phone_number);
188
initialValues.put(IP, ip);
189
190
return
db.update(DATABASE_TABLE, initialValues, POSITION
+
"
=
"
+
position,
null
)
>
0
;
191
}
192
193
public
Cursor getAll() {
194
195
Cursor cur
=
db.query(DATABASE_TABLE,
196
null
,
null
,
null
,
null
,
null
,
null
);
197
return
cur;
198
199
}
200
201
public
Cursor get(
long
rowId)
throws
SQLException {
202
Cursor cur
=
db.query(
true
, DATABASE_TABLE,
new
String[] {POSITION,
203
NAME,
204
PHONE_NUMBER,
205
IP},
206
207
POSITION
+
"
=
"
+
rowId,
null
,
null
,
null
,
null
,
null
);
208
209
if
(cur
!=
null
) {
210
cur.moveToFirst();
211
}
212
213
return
cur;
214
}
215
216
}
2、Activity中调用:
1
public
DBAdapter m_DBAdapter;
2
3
m_DBAdapter
=
new
DBAdapter(
this
);
4
m_DBAdapter.open();