安卓手机端数据库大部分用SQLite,SQLite是一个轻量数据库,符合手机的性能,否则占用内存太大,资源占用过多。
这里利用单元测试进行操作。新建一个包,引用相关测试需要的类库
package com.example.sql_lite;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
//数据库方法获取
public class MySqlHelper extends SQLiteOpenHelper {
//游标工厂:
public MySqlHelper(Context context
) {//数据库名是可以写死的,这里直接写死了,保持代码简洁性
super(context, "people.db", null, 1);
// TODO 自动生成的构造函数存根
}
@Override
//创建数据库调用
public void onCreate(SQLiteDatabase db) {
// TODO 自动生成的方法存根
//创建表
db.execSQL("create table person(_id primary key autoincrement,name char(20),phone char(20),salary integer(10))");
}
@Override
//升级数据库调用
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO 自动生成的方法存根
}
}新建一个包,创建测试类
package com.example.sql_lite.test;
import java.sql.SQLData;
import com.example.sql_lite.MySqlHelper;
import android.database.sqlite.SQLiteDatabase;
import android.test.AndroidTestCase;
public class Test extends AndroidTestCase{
private MySqlHelper oh;
private SQLiteDatabase db;
public void test() {
}
@Override
protected void setUp() throws Exception {
// TODO 自动生成的方法存根
//会在测试之前就先调用,避免代码复用,但是不能生命在前面,因为那时还没初始化完全,getContext()获取上下文出错
super.setUp();
oh = new MySqlHelper(getContext());
db = oh.getWritableDatabase();
}//落泪方法,即摧毁方法,会在测试完成后调用
<span style="white-space:pre"> </span>@Override
<span style="white-space:pre"> </span>protected void tearDown() throws Exception {
<span style="white-space:pre"> </span>// TODO 自动生成的方法存根
<span style="white-space:pre"> </span>super.tearDown();
<span style="white-space:pre"> </span>db.close();
<span style="white-space:pre"> </span>}
//插入数据
public void insert() {
db.execSQL("insert into person(name,phone,salary) values(?,?,?)",new Object[]{"cui","22",20000});
db.execSQL("insert into person(name,phone,salary) values(?,?,?)",new Object[]{"cui2","22",20000});
} //删除数据
public void delete() {
db.execSQL("delete from person where name = ?",new Object[]{"cui"});
}
} //更新数据 public void updata() {
db.execSQL("updata person set salary = ? where name = ?", new Object[]{15000,"cui"});
}
//查询语句,exeSQL是SQL执行语句,注意他是没有返回值的,所以查询不用exeSQL
public void select() {
Cursor cur = db.rawQuery("select * from person", null);
//把指针移动至下一行,movethnext方法返回值是boolean
while (cur.moveToNext()) {
//先通过列名,获取列索引,再通过索引获取其内容
String name = cur.getString(cur.getColumnIndex("name"));
String phone = cur.getString(cur.getColumnIndex("phone"));
int salary = cur.getInt(cur.getColumnIndex("salary"));
}
}
本文介绍了安卓手机端使用SQLite数据库的方法,包括数据库创建、升级、插入、删除、更新及查询操作,并通过单元测试实现对数据库操作的验证。
1610

被折叠的 条评论
为什么被折叠?



