28 数据库SQLine 的增删改查

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));
}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值