main_activity不动
创建一个java.bean 实现数据的get set方法
package com.itheima.sqlite;
public class Account {
private Integer id;
private String name;
private Integer balance;
public Account() {
super();
}
public Account(String name, Integer balance) {
super();
this.name = name;
this.balance = balance;
}
public Account(Integer id, String name, Integer balance) {
super();
this.id = id;
this.name = name;
this.balance = balance;
}
@Override
public String toString() {
return "Account [id=" + id + ", name=" + name + ", balance=" + balance + "]";
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getBalance() {
return balance;
}
public void setBalance(Integer balance) {
this.balance = balance;
}
}
实现对数据库操作的业务类方法
package com.itheima.sqlite;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class AccountDao {
private MyHelper helper;
public AccountDao(Context context) {
helper = new MyHelper(context);
}
public void insert(Account a) {
SQLiteDatabase db = helper.getWritableDatabase();// 获取SQLiteDatabase对象
db.execSQL("INSERT INTO account(name, balance) VALUES(?, ?)", new Object[] { a.getName(), a.getBalance() });// 执行一条SQL语句
db.close(); // 关闭
}
public void delete(int id) {
SQLiteDatabase db = helper.getWritableDatabase();// 获取SQLiteDatabase对象
db.execSQL("DELETE FROM account WHERE _id=?", new Object[] { id }); // 执行
db.close(); // 关闭
}
public void update(Account a) {
SQLiteDatabase db = helper.getWritableDatabase();// 获取
db.execSQL("UPDATE account SET name=?, balance=? WHERE _id=?", new Object[] { a.getName(), a.getBalance(), a.getId() }); // 执行
db.close(); // 关闭
}
public Account query(int id) {
SQLiteDatabase db = helper.getReadableDatabase();
Cursor c = db.rawQuery("SELECT name, balance FROM account WHERE _id=?", new String[] { id + "" });// 执行查询语句, 得到结果集
Account a = null;
if (c.moveToNext()) {// 判断结果集是否包含下一条数据, 如果包含, 指针自动向后移动
String name = c.getString(0);// 从结果集中获取数据 0 是根据SQL语句定义的顺序 ("SELECT name, balance FROM account WHERE _id=?", new String[] { id + "" })
如果是查询所有 SELECT * FROM account 就是按数据库表中的顺序查询
int balance = c.getInt(1);
a = new Account(id, name, balance);// 创建对象, 把数据设置到对象中
}
c.close();
db.close();
return a; // 返回对象
}
}
创建测试类 实现对数据库的操作
package com.itheima.sqlite;
import android.test.AndroidTestCase;
public class SQLiteTest extends AndroidTestCase {
// 测试类中的Context对象是在测试类创建之后(构造函数执行之后), 虚拟机自动调用setContext()传入的, 如果在成员变量位置就getContext()则拿不到
private AccountDao dao;
@Override
protected void setUp() throws Exception {// 测试方法执行之前执行
System.out.println("setUp");
dao = new AccountDao(getContext());
}
@Override
protected void tearDown() throws Exception {// 测试方法执行之后执行
System.out.println("tearDown");
}
public void testCreateDB() {
new MyHelper(getContext()).getWritableDatabase(); // 获取数据库对象
/*
* 情况1: 数据库文件不存在, 创建文件, 打开数据库连接(得到SQLiteDatabase对象), 执行onCreate()方法 情况2:
* 数据库文件存在, 版本号没变, 打开数据库连接 情况3: 数据库文件存在, 版本号提升, 升级数据库, 打开数据库连接,
* 执行onUpgrade()方法 情况4: 数据库文件存在, 版本号降低, 执行onDowngrade()方法, 方法中默认会抛出一个异常
*/
}
public void testInsert() {
dao.insert(new Account("朴乾", 12345));
dao.insert(new Account("付东", 23456));
}
public void testDelete() {
dao.delete(2);
}
public void testUpdate() {
dao.update(new Account(2, "李印东", 10000));
}
public void testQuery() {
System.out.println(dao.query(3));
System.out.println(dao.query(4));
System.out.println(dao.query(5));
System.out.println(dao.query(6));
}
}