package com.example.android_db.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.android_db.db.DbOpenHelper;
import com.example.android_db.service.PersonService2;
public class PersonDao2 implements PersonService2 {
private DbOpenHelper helper = null;
public PersonDao2(Context context) {
// TODO Auto-generated constructor stub
helper = new DbOpenHelper(context);
}
@Override
public boolean addPerson(ContentValues values) {
// TODO Auto-generated method stub
boolean flag = false;
SQLiteDatabase database = null;
long id = -1;
try {
database = helper.getWritableDatabase();
id = database.insert("person", null, values);
flag = (id != -1 ? true : false);
} catch (Exception e) {
// TODO: handle exception
} finally {
if (database != null) {
database.close();
}
}
return flag;
}
@Override
public boolean deletePerson(String whereClause, String[] whereArgs) {
// TODO Auto-generated method stub
boolean flag = false;
SQLiteDatabase database = null;
int count = 0;
try {
database = helper.getWritableDatabase();
count = database.delete("person", whereClause, whereArgs);
flag = (count > 0 ? true : false);
} catch (Exception e) {
// TODO: handle exception
} finally {
if (database != null) {
database.close();
}
}
return flag;
}
@Override
public boolean updatePerson(ContentValues values, String whereClause,
String[] whereArgs) {
boolean flag = false;
SQLiteDatabase database = null;
int count = 0;// 影响数据库的行数
try {
database = helper.getWritableDatabase();
count = database.update("person", values, whereClause, whereArgs);
flag = (count > 0 ? true : false);
} catch (Exception e) {
// TODO: handle exception
} finally {
if (database != null) {
database.close();
}
}
return flag;
}
@Override
public Map<String, String> viewPerson(String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
// select 返回的列的名称(投影查询) from
SQLiteDatabase database = null;
Cursor cursor = null;
Map<String, String> map = new HashMap<String, String>();
try {
database = helper.getReadableDatabase();
cursor = database.query(true, "person", null, selection,
selectionArgs, null, null, null, null);
int cols_len = cursor.getColumnCount();
while (cursor.moveToNext()) {
for (int i = 0; i < cols_len; 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) {
// TODO: handle exception
e.printStackTrace();
} finally {
if (database != null) {
database.close();
}
}
return map;
}
@Override
public List<Map<String, String>> listPersonMaps(String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
SQLiteDatabase database = null;
Cursor cursor = null;
try {
database = helper.getReadableDatabase();
cursor = database.query(false, "person", null, selection,
selectionArgs, null, null, null, null);
int cols_len = cursor.getColumnCount();
while (cursor.moveToNext()) {
Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < cols_len; 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) {
// TODO: handle exception
e.printStackTrace();
} finally {
if (database != null) {
database.close();
}
}
return list;
}
}
测试类:
package com.example.android_db.test;
import java.util.List;
import java.util.Map;
import com.example.android_db.dao.PersonDao2;
import com.example.android_db.service.PersonService2;
import android.content.ContentValues;
import android.test.AndroidTestCase;
import android.view.ViewDebug.FlagToString;
public class MyTest2 extends AndroidTestCase {
public MyTest2() {
// TODO Auto-generated constructor stub
}
public void addPerson() {
PersonService2 service2 = new PersonDao2(getContext());
ContentValues values = new ContentValues();// 类似map的属性
values.put("name", "杰克");
values.put("address", "XX");
values.put("sex", "男");
boolean flag = service2.addPerson(values);
System.out.println("--->>" + flag);
}
public void deletePerson() {
PersonService2 service2 = new PersonDao2(getContext());
// delete from person where id = ?
//不包含 where关键字
boolean flag = service2.deletePerson(" id = ? ", new String[] { "4" });
System.out.println("--->>" + flag);
}
public void updatePerson(){
PersonService2 service2 = new PersonDao2(getContext());
ContentValues values = new ContentValues();// 类似map的属性
values.put("name", "杰克");
values.put("address", "XX");
values.put("sex", "女");
boolean flag = service2.updatePerson(values, " id = ? ", new String[]{"2"});
System.out.println("--->>" + flag);
}
public void viewPerson(){
PersonService2 service2 = new PersonDao2(getContext());
Map<String,String> map = service2.viewPerson(" id = ? ", new String[]{"2"});
System.out.println("-->>"+map.toString());
}
public void listPerson(){
PersonService2 service2 = new PersonDao2(getContext());
//select * from person
List<Map<String,String>> list = service2.listPersonMaps(null, null);
System.out.println("-->>"+list.toString());
}
}