1 importandroid.content.Context;
2 importandroid.database.sqlite.SQLiteDatabase;
3 importandroid.database.sqlite.SQLiteOpenHelper;
4
5 public classDatabaseHelper extendsSQLiteOpenHelper
6 {
7 //数据库名称
8 private static final StringDB_NAME = "SQLiteDemo.db";
9 //数据库版本
10 private static final intDB_VERSION = 1;
11
12 //表名
13 public static final StringTABLE_NAME = "demo";
14
15 private static final StringDB_CREATE = "create table " +TABLE_NAME + "(_id integer primary key autoincrement, name varchar(20), numbervarchar(10))";
16
17 publicDatabaseHelper(Context context)
18 {
19 super(context,DB_NAME, null,DB_VERSION);
20
21 }
22
23 /**
24 * 创建表
25 */
26 @Override
27 public voidonCreate(SQLiteDatabase db)
28 {
29 db.execSQL(DB_CREATE);
30
31 }
32
33 /**
34 * 更新表
35 */
36 @Override
37 public voidonUpgrade(SQLiteDatabase db, intoldVersion, intnewVersion)
38 {
39 // db.execSQL("drop table if exists " + TABLE_NAME);
40 // onCreate(db);
41
42 }
43
44 }
接着再上数据操作辅助类DatabaseServer.java
45 importandroid.content.ContentValues;
46 importandroid.content.Context;
47 importandroid.database.Cursor;
48 importandroid.database.sqlite.SQLiteDatabase;
49
50 public classDatabaseServer
51 {
52 privateDatabaseHelper dbHelper;
53
54 publicDatabaseServer(Context context)
55 {
56 this.dbHelper= newDatabaseHelper(context);
57 }
58
59 /**
60 * 插入数据
61 *
62 *@param name
63 * 名字
64 *@param number
65 * 数据
66 *@return 如果成功则返回true,否则返回false
67 */
68 public booleaninsert(String name, String number)
69 {
70 //创建或打开数据库
71 SQLiteDatabase db =dbHelper.getWritableDatabase();
72
73 ContentValues cv = newContentValues();
74 cv.put("name",name);
75 cv.put("number",number);
76 //插入数据,返回插入数据ID
77 long id =db.insert(dbHelper.TABLE_NAME, null,cv);
78 if (id !=0)
79 {
80 return true;
81 }
82
83 return false;
84 }
85
86 /**
87 * 更新数据
88 *
89 *@param id
90 * 数据列_id
91 *@param number
92 * 数量
93 *@return 如果成功则返回true,否则返回false
94 */
95 public boolean update(int id,String number)
96 {
97
98 SQLiteDatabase db =dbHelper.getWritableDatabase();
99
100 //Android自带的ContetValues,类似于Map,提供了put(Stringkey, XXX value)的方法存入数据
101 ContentValues cv = newContentValues();
102 cv.put("number",number);
103
104 //通过ContentValues更新数据表,返回更新的ID值
105 int result =db.update(dbHelper.TABLE_NAME, cv, "_id=?",
106 new String[] { String.valueOf(id) });
107
108 if(result != 0)
109 {
110 return true;
111 }
112
113 return false;
114 }
115
116 /**
117 * 删除数据
118 *
119 *@param id
120 * 数据列_id
121 *@return
122 */
123 public boolean delete(int id)
124 {
125
126 SQLiteDatabase db = dbHelper.getWritableDatabase();
127
128 //删除指定ID值
129 int result =db.delete(dbHelper.TABLE_NAME, "_id=?",
130 new String[] { String.valueOf(id) });
131
132 if(result != 0)
133 {
134 return true;
135 }
136
137 return false;
138 }
139
140 /**
141 * 查询数据
142 *
143 *@return 返回数据列表
144 */
145 public CursorfetchAll()
146 {
147
148 SQLiteDatabase db =dbHelper.getReadableDatabase();
149 //查询数据表中所有字段
150 Cursor cursor =db.query(dbHelper.TABLE_NAME, null, null, null, null,
151 null, "_id desc");
152 if(cursor != null)
153 {
154 return cursor;
155 }
156 return null;
157
158 }
159 }
这里两个类都建好了,但我们要测试一下我们建的这两个类是否工作正常,能否插入,更新,删除,查询数据,这里我们就用了TestCase来做测试
SQLiteDemoTest.java
160 importandroid.database.Cursor;
161 importandroid.test.AndroidTestCase;
162
163 public classSQLiteDemoTest extendsAndroidTestCase
164 {
165 privateDatabaseServer dbServer;
166
167 /**
168 * 测试插入数据
169 */
170 public voidtestinsert()
171 {
172 dbServer = new DatabaseServer(this.getContext());
173 boolean flag =dbServer.insert("沙僧", "10");
174 System.out.println(flag);
175 }
176
177 /**
178 * 测试查询数据
179 */
180 public voidtestfetchAll()
181 {
182 dbServer = new DatabaseServer(this.getContext());
183 Cursor cursor =dbServer.fetchAll();
184 while(cursor.moveToNext())
185 {
186 System.out.println(cursor.getString(1));
187 System.out.println(cursor.getString(2));
188 }
189
190 }
191
192 /**
193 * 测试更新数据
194 */
195 public voidtestupdate()
196 {
197 dbServer = new DatabaseServer(this.getContext());
198 boolean flag =dbServer.update(1, "20");
199 System.out.println(flag);
200 }
201
202 /**
203 * 测试删除数据
204 */
205 public voidtestdelete()
206 {
207 dbServer = new DatabaseServer(this.getContext());
208 boolean flag =dbServer.delete(1);
209 System.out.println(flag);
210 }
211 }
当然,别忘记了,在AndroidManifest.xml中还要加入测试库文件
212 <?xml version="1.0" encoding="utf-8"?>
213 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
214 package="com.kang.button_demo" android:versionCode="1"
215 android:versionName="1.0">
216 <uses-sdk android:minSdkVersion="10" />
217
218 <application android:icon="@drawable/icon" android:label="@string/app_name">
219 <uses-library android:name="android.test.runner" />
220 <activity android:label="@string/app_name" android:name=".SQLiteDemo">
221 <intent-filter>
222 <action android:name="android.intent.action.MAIN" />
223 <category android:name="android.intent.category.LAUNCHER" />
224 </intent-filter>
225 </activity>
226
227 </application>
228
229 <instrumentation android:name="android.test.InstrumentationTestRunner"
230 android:targetPackage="com.kang.button_demo" android:label="Testsfor My App" />
231 </manifest>
这里有一个<uses-library>这是测试库,必须要加入的,还有就是最后<instrumentationandroid:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.kang.button_demo"android:label="Tests for My App" />也是必须加的,这是定义测试包的,你的测试文件必须要放在根包下的,这里我的根包是com.kang.button_demo
好了,你可以运行一下,看是否是出现蓝条,而不是红条,呵呵,上图