1.创建一个数据库
package com.sqlite.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class Persondb extends SQLiteOpenHelper {
public Persondb(Context context) {
super(context, "person.db", null, 2);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(
"create table person (id integer primary key autoincrement,"
+ "name varchar(20),number varchar(20))"
);
}
@Override
public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
db.execSQL("ALTER table person add account varchar(20)");
}
}
2.创建一个数据库操作类
package com.sqlite.person.dao;
import java.util.ArrayList;
import java.util.List;
import com.sqlite.db.Persondb;
import com.sqlite.person.domain.Person;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class PersonDao {
private SQLiteOpenHelper helper;
public PersonDao(Context context){
helper = new Persondb(context);
}
/**
* 添加一条数据
* @param name
* @param number
*/
public void add(String name, String number)
{
SQLiteDatabase db = helper.getWritableDatabase();
/*
db.execSQL(
"INSERT INTO person (name,number)VALUES(?,?)",
new Object[]{name, number}
);*/
ContentValues values = new ContentValues();
values.put("name", name);
values.put("number", number);
db.insert("person", null, values);
db.close();
}
/**
* 测试查找数据库是否有这条记录
* @param name
* @return
*/
public boolean find(String name)
{
SQLiteDatabase db = helper.getReadableDatabase();
/*
Cursor cursor = db.rawQuery(
"SELECT * FROM person WHERE name = ?",
new String[]{name}
);*/
Cursor cursor = db.query("person", null, "name=?", new String[]{name}, null, null, null);
boolean res = cursor.moveToNext();
cursor.close();
db.close();
return res;
}
/**
* 修改数据
* @param name
* @param number
*/
public void update(String name, String number)
{
SQLiteDatabase db = helper.getWritableDatabase();
/*
db.execSQL(
"UPDATE person SET number = ? WHERE name = ?",
new Object[]{number,name}
);*/
ContentValues values = new ContentValues();
values.put("number", number);
db.update("person", values, "name=?", new String[]{name});
db.close();
}
/**
* 删除
* @param name
*/
public void del(String name)
{
SQLiteDatabase db = helper.getWritableDatabase();
/*
db.execSQL(
"DELETE FROM person WHERE name = ?",
new Object[]{name}
);*/
db.delete("person", "name=?", new String[]{name});
db.close();
}
/**
* 返回所有记录
* @return
*/
public List<Person> findAll()
{
SQLiteDatabase db = helper.getReadableDatabase();
//Cursor cursor = db.rawQuery("SELECT * FROM person", null);
Cursor cursor = db.query("person", new String[]{"name","id","number"}, null, null, null, null,null);
List<Person> persons = new ArrayList<Person>();
while(cursor.moveToNext()){
Person p = new Person();
p.setId(cursor.getInt(cursor.getColumnIndex("id")));
p.setName(cursor.getString(cursor.getColumnIndex("name")));
p.setNumber(cursor.getString(cursor.getColumnIndex("number")));
persons.add(p);
}
cursor.close();
db.close();
return persons;
}
String s;
public void transaction(String name1,String name2,int account)
{
SQLiteDatabase db = helper.getWritableDatabase();
db.beginTransaction();
try {
ContentValues val1 = new ContentValues();
ContentValues val2 = new ContentValues();
val1.put("account", account);
val2.put("account", account);
db.update("person", val1, "name=?", new String[]{name1});
db.update("person", val2, "name=?", new String[]{name2});
s.equals("xx");
db.setTransactionSuccessful();
} catch (Exception e) {
// TODO: handle exception
} finally {
db.endTransaction();
db.close();
}
}
}
package com.sqlite.person.domain;
public class Person {
private String name;
private String number;
private int id;
public Person() {
}
public Person(String name, String number) {
this.name = name;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String toString() {
return "Person [name=" + name + ", number=" + number + ", id=" + id
+ "]";
}
}
package com.sqlite.test;
import java.util.List;
import com.sqlite.db.Persondb;
import com.sqlite.person.dao.PersonDao;
import com.sqlite.person.domain.Person;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
public class DbTest extends AndroidTestCase {
public void testCreate()
{
Persondb pdb = new Persondb(getContext());
pdb.getWritableDatabase();
}
/**
* 添加
*/
public void testAdd()
{
PersonDao pd = new PersonDao(getContext());
pd.add("xiaohei", "133000");
}
/*
* 测试查询
**/
public void testFind()
{
PersonDao pd = new PersonDao(getContext());
boolean res = pd.find("testTang");
assertEquals(true, res);
}
/**
* 测试修改
*/
public void testUpdate()
{
PersonDao pd = new PersonDao(getContext());
pd.update("testTang", "150000");
}
/**
* 测试删除
*/
public void testDel()
{
PersonDao pd = new PersonDao(getContext());
pd.del("testTang");
}
/**
* 测试查询所有
*/
public void testFindAll()
{
PersonDao pd = new PersonDao(getContext());
List<Person> list = pd.findAll();
StringBuffer bf = new StringBuffer();
for (Person p : list) {
bf.append(p.toString());
}
System.out.println(bf);
}
public void testTransaction()
{
PersonDao pd = new PersonDao(getContext());
pd.transaction("testTang", "xiaohei", 1000);
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sqlite.db"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="19"
android:targetSdkVersion="19" />
<instrumentation #这里测试必须加
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.sqlite.db" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.sqlite.db.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>
<uses-library android:name="android.test.runner" />#还有这里测试也得加
</application>
</manifest>