PersonDBOpenHelper.java
package com.demo.dbtest.dbHelper; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; /** * 1.写一个类,继承SQLiteOpenHelper帮助创建数据库版本的控制 * @author David * */ public class PersonDBOpenHelper extends SQLiteOpenHelper { private static final String TAG = "PersonDBOpenHelper"; /** * 数据库创建帮助类的构造方法 * @param context */ public PersonDBOpenHelper(Context context) { /** * name 数据库文件的名称 * factory 访问数据库的一个数据库的游标工厂 * version 数据库的版本 */ super(context,"person.db",null,2); } /** * 当数据库第一次被创建的时候调用的方法 * 适合做数据库表结构的初始化 * * 注意:如果数据库已经存在,那么oncreate方法就不会再次被调用 * 也就是说,如果数据库创建了,该oncreate无法改变数据库的版本, * 或者修改数据库的内容,如果想修改数据库的内容,请调用下面的 * onUpgrade方法 */ @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table person(id integer primary key autoincrement,name varchar(20),phone varchar(20))"); Log.i(TAG, "数据库被创建了..."); } //当数据库的版本号增加的时候 @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { Log.i(TAG, "数据库的版本变化了..."); } }PersonDao2.java
package com.demo.dbtest.dao; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import com.demo.dbtest.dbHelper.PersonDBOpenHelper; public class PersonDao2 { //增删改查 //javaweb 1.加载jdbc驱动,连接 2.准备sql 3.查询 private PersonDBOpenHelper helper; //任何人是使用dao都要传递一个上下文 public PersonDao2(Context context){ helper = new PersonDBOpenHelper(context); } /** * 添加一条记录 */ public boolean add(String name,String phone){ SQLiteDatabase db = helper.getWritableDatabase(); //db.execSQL("insert into person(name,phone) values(?,?)", new Object[]{name,phone}); ContentValues values = new ContentValues();//map集合 values.put("name", name); values.put("phone", phone); long result = db.insert("person", null, values); db.close(); if(result != -1){ return true; }else{ return false; } } /** * 删除一条记录 */ public boolean delete(int id){ SQLiteDatabase db = helper.getWritableDatabase(); //db.execSQL("delete from person where id = ?",new Object[]{id}); int result = db.delete("person", "id=?", new String[]{id + ""}); db.close(); if(result > 0){ return true; }else{ return false; } } /** * 更新记录 */ public boolean update(String newphone,int id){ SQLiteDatabase db = helper.getWritableDatabase(); //db.execSQL("update person set phone =? where id=?",new Object[]{newphone,id}); ContentValues values = new ContentValues(); values.put("phone", newphone); int result = db.update("person", values, "id=?", new String[]{id + ""}); db.close(); if(result > 0){ return true; }else{ return false; } } /** * 查询记录 * @return 当前记录的id,如果不存在,返回-1 */ public int find(String name){ int id = -1; SQLiteDatabase db = helper.getReadableDatabase(); //获取可读的数据库 //Cursor cursor = db.rawQuery("select id from person where name=?", new String[]{name}); Cursor cursor = db.query("person", new String[]{"id"}, "name=?", new String[]{name}, null, null, null); if(cursor.moveToFirst()){ //移动到结果集的第一行,如果移动成功,证明查询成功了 id = cursor.getInt(0); //获得第一列的内容 } cursor.close(); db.close(); return id; } }
package com.demo.dbtest.test; import com.demo.dbtest.dao.PersonDao2; import android.test.AndroidTestCase; public class TestPersonDao extends AndroidTestCase { private PersonDao2 dao; @Override protected void setUp() throws Exception { dao = new PersonDao2(getContext()); //测试框架,提供一个假的虚拟的上下文 super.setUp(); } public void testAdd() throws Exception{ dao.add("lisi", "444444"); } public void testDelete() throws Exception{ int id = dao.find("zhangsan"); dao.delete(id); } public void testUpdate() throws Exception{ int id = dao.find("zhangsan"); dao.update("99999", id); } public void testFind() throws Exception{ dao.find("zhangsan"); } }
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.demo.dbtest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <instrumentation android:name="android.test.InstrumentationTestRunner" android:label="Tests for My App" android:targetPackage="com.demo.dbtest" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <uses-library android:name="android.test.runner" /> <activity android:name="com.demo.dbtest.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>