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;
}
}
TestPersonDao.java
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");
}
}
AndroidManifest.xml
<?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>
1796

被折叠的 条评论
为什么被折叠?



