5 数据库的另外一种增删改查的方法

来源:互联网 发布:js时间格式化yyyymmdd 编辑:程序博客网 时间:2024/05/13 04:09

实体类

package org.sicn.lee.domain;public class Person {private String name;private String phone;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}}

创建数据库

package org.sicn.lee.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;public class MyOpenHelper extends SQLiteOpenHelper {public MyOpenHelper(Context context) {super(context, "sicnlee.db", null, 1);}@Overridepublic void onCreate(SQLiteDatabase db) {String sql="create table person(personid integer primary key autoincrement,name varchar(10),phone varchar(20))";db.execSQL(sql);}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}

dao实现类

package org.sicn.lee.dao;import java.util.ArrayList;import java.util.List;import org.sicn.lee.db.MyOpenHelper;import org.sicn.lee.domain.Person;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;public class PersonDAO {private MyOpenHelper openHelp;public PersonDAO(Context context) {this.openHelp =new MyOpenHelper(context);}public Person find(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy){Person person=null;SQLiteDatabase db=openHelp.getReadableDatabase();if(db.isOpen()){Cursor cursor=db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);if(cursor.moveToFirst()){person=new Person();String name=cursor.getString(cursor.getColumnIndex("name"));String phone=cursor.getString(cursor.getColumnIndex("phone"));person.setName(name);person.setPhone(phone);}cursor.close();db.close();}else{System.out.println("数据库没有打开");}return person;}public boolean add(String table, String nullColumnHack, ContentValues values){boolean flag=false;SQLiteDatabase db=openHelp.getWritableDatabase();if(db.isOpen()){long insert=db.insert(table, nullColumnHack, values);if(insert>0){flag=true;}db.close();}else{System.out.println("数据库没有打开");}return flag;}public boolean update(String table, ContentValues values, String whereClause, String[] whereArgs){boolean flag=false;SQLiteDatabase db=openHelp.getWritableDatabase();if(db.isOpen()){int update=db.update(table, values, whereClause, whereArgs);if(update>0){flag=true;}db.close();}else{System.out.println("数据库没有打开");}return flag;}public boolean delete(String table, String whereClause, String[] whereArgs){boolean flag=false;SQLiteDatabase db=openHelp.getWritableDatabase();if(db.isOpen()){int del=db.delete(table, whereClause, whereArgs);if(del>0){flag=true;}db.close();}else{System.out.println("数据库没有打开");}return flag;}public List<Person> findAll(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy){List<Person> list=new ArrayList<Person>();SQLiteDatabase db=openHelp.getReadableDatabase();if(db.isOpen()){Cursor cursor=db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);Person person=null;while(cursor.moveToNext()){person=new Person();String name=cursor.getString(cursor.getColumnIndex("name"));String phone=cursor.getString(cursor.getColumnIndex("phone"));person.setName(name);person.setPhone(phone);list.add(person);}cursor.close();db.close();}else{System.out.println("数据库没有打开");}return list;}}

junit测试类

package org.sicn.lee.junit;import java.util.Iterator;import java.util.List;import org.sicn.lee.dao.PersonDAO;import org.sicn.lee.domain.Person;import android.content.ContentValues;import android.test.AndroidTestCase;public class PersonJunit extends AndroidTestCase {public void testInsert(){PersonDAO dao=new PersonDAO(getContext());ContentValues values=new ContentValues();values.put("name","sicnlee2");values.put("phone","123456789");boolean flag=dao.add("person",null,values);System.out.println("添加:"+flag);}public void testFind(){PersonDAO dao=new PersonDAO(getContext());Person person=dao.find("person",null,"name=?",new String[]{"sicnlee1"}, null, null, null);System.out.println("姓名:"+person.getName()+";电话:"+person.getPhone());}public void testUpdate(){PersonDAO dao=new PersonDAO(getContext());ContentValues values=new ContentValues();values.put("name","dudufish");values.put("phone","987654321");boolean flag=dao.update("person", values,"name=?",new String[]{"sicnlee1"});System.out.println("修改:"+flag);}public void testFindAll(){PersonDAO dao=new PersonDAO(getContext());List<Person> list=dao.findAll("person", null, null, null, null, null, null);Iterator<Person> iter=list.iterator();while(iter.hasNext()){Person person=iter.next();System.out.println("姓名:"+person.getName()+";电话号码:"+person.getPhone());}}public void testDelete(){PersonDAO dao=new PersonDAO(getContext());boolean flag=dao.delete("person","name=?",new String[]{"sicnlee2"});System.out.println("删除:"+flag);}}

junit测试框架的配置信息

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="org.sicn.lee.contentvaluedemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="18" />        <instrumentation        android:name="android.test.InstrumentationTestRunner"        android:targetPackage="org.sicn.lee.contentvaluedemo" />    <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="org.sicn.lee.contentvaluedemo.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>


0 0