您的位置:首页 > 移动开发 > Android开发

对Android sqlite数据库的简单熟悉

2015-01-18 21:42 405 查看
先创建一个接口,源码如下:

package service;

import java.util.List;
import java.util.Map;
//声明一个接口,好让personDao来实现
public interface PersonService {
public boolean addPerson(Object[] params);

public boolean deletePerson(Object[] params);

public boolean updataPerson(Object[] params);

public Map<String,String> viewPerson(String[] selectionArgs);

public List<Map<String,String>> listPersonMaps(String[] selectionArgs);
}


再创建一个Dao,源码如下:

package dao;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

import com.sunmoon.notification.db.DbOpenHelper;

import service.PersonService;

public class personDao implements PersonService {

private DbOpenHelper helper = null;

public personDao(Context context) {
helper = new DbOpenHelper(context);
}

//插入数据
@Override
public boolean addPerson(Object[] params) {
boolean flag = false;
SQLiteDatabase database = null;
try {
String sql = "insert into person(name,address,sex) values(?,?,?)";
database = helper.getWritableDatabase();
database.execSQL(sql, params);
flag = true;

} catch (Exception e) {

} finally {
if (database != null) {
database.close();
}
}

return flag;
}

//删除数据
@Override
public boolean deletePerson(Object[] params) {
boolean flag = false;
SQLiteDatabase database = null;

try {
String sql = "delete from person where id = ?";
database = helper.getWritableDatabase();
database.execSQL(sql, params);

flag = true;

} catch (Exception e) {
} finally {
if (database != null) {
database.close();
}
}
return false;
}

//更新数据
@Override
public boolean updataPerson(Object[] params) {
boolean flag = false;
SQLiteDatabase database = null;
try {
String sql = "update person set name = ?,address = ?, sex = ? where id = ? ";
database = helper.getWritableDatabase();
database.execSQL(sql, params);
} catch (Exception e) {
} finally {
if (database != null) {
database.close();
}
}
return flag;
}

//查询单个数据
@Override
public Map<String, String> viewPerson(String[] selectionArgs) {
Map<String, String> map = new HashMap<String, String>();
SQLiteDatabase database = null;
try {
String sql = "select * from person where id = ?";
database = helper.getWritableDatabase();
Cursor cursor = database.rawQuery(sql, selectionArgs);

int colums = cursor.getColumnCount();
while (cursor.moveToNext()) {
for (int i = 0; i < colums; i++) {
String cols_name = cursor.getColumnName(i);
String cols_value = cursor.getString(cursor
.getColumnIndex(cols_name));
if (cols_value == null) {
cols_value = "";
}
map.put(cols_name, cols_value);

}
}

} catch (Exception e) {
} finally {
if (database != null) {
database.close();
}
}

return map;
}

//查询多个数据
@Override
public List<Map<String, String>> listPersonMaps(String[] selectionArgs) {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
String sql = "select * from person";
SQLiteDatabase database = null;
try {
database = helper.getReadableDatabase();
Cursor cursor = database.rawQuery(sql, selectionArgs);
int colums = cursor.getColumnCount();
while (cursor.moveToNext()) {
Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < colums; i++) {
String cols_name = cursor.getColumnName(i);
String cols_value = cursor.getString(cursor
.getColumnIndex(cols_name));
if (cols_value == null) {
cols_value = "";
}
map.put(cols_name, cols_value);
}
list.add(map);
}

} catch (Exception e) {
} finally {
if (database != null) {
database.close();
}
}
return list;
}

}


在一个测试类中测试,源码如下:

package com.sunmoon.notification.test;

import java.util.List;
import java.util.Map;

import service.PersonService;

import com.sunmoon.notification.db.DbOpenHelper;

import dao.personDao;

import android.test.AndroidTestCase;
import android.util.Log;

public class myTest extends AndroidTestCase {

public myTest() {
}

public void createDb(){
DbOpenHelper helper = new DbOpenHelper(getContext());
helper.getWritableDatabase();
}

public void insertDB(){
PersonService service = new personDao(getContext());
Object[] params = {"李四","四川","女"};
boolean flag = service.addPerson(params);
System.out.println("-->"+flag);
}
public void delteDB(){
PersonService service = new personDao(getContext());
Object[] params = {1};
boolean flag = service.deletePerson(params);
System.out.println("-->"+flag);
}

public void updateDB(){
PersonService service = new personDao(getContext());
Object[] params = {"王五","内江","不详","3"};
service.updataPerson(params);
}

public void viewDB(){
PersonService service = new personDao(getContext());
String[] serlectionArgs = {"3"};
Map<String,String> map = service.viewPerson(serlectionArgs);
Log.i("Test","-->>"+map.toString());

}

public void listDB(){
PersonService service = new personDao(getContext());
List<Map<String,String>> list =  service.listPersonMaps(null);
Log.i("Test","-->>"+list.toString());

}

}


在测试的类之前,要在清单文件中进行配置

<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.baoxiu123.notification" >
</instrumentation>
还得要在 application中加入一个uses-library 例如:

<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" />
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: