Android中采用的数据库是一个轻量级的数据库SQLite,在使用这个数据库时不用再导包,

,使用SQLite数据库时,首先要继承SQLiteOpenHelper,SQLiteOpenHelper是一个用于数据库的创建和管理的类,子类通过实现onCrate来实现数据库的创建,通过实现onUpGrade来实现数据库版本的控制。

通过下面具体代码来了解一下如何创建一个数据库:

public classMyDBOpenHelper extends SQLiteOpenHelper{

//这是构造方法,通过构造方法可以创建一个名为hello.db的数据库

//构造函数可以只传一个代表上下文的Context变量,也可以传入数据库名称,游//标工厂,数据库版本号。当然,后面这三个参数也可以通过调用父类的构造函数//时传入。第三个参数传入null时,默认使用默认的游标工厂。

public MyDBOpenHelper(Contextcontext) {

super(context, "hello.db",null,1);

}

//数据库第一次创建时调用,在这里面可以在数据库名为hello.db下创建一张表。

@Override

public void onCreate(SQLiteDatabasedb) {

System.out.println("数据库创建");

db.execSQL("create table person (id INTEGER primary keyautoincrement,name varchar(20),balance varchar(20))");

}

//onUpGrade是通过检查数据库版本是否改变,如果改变了则执行该方法,否则不执行

@Override

public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

}

}

通过实例化MyDBOpenHelper类可以对已经创建的数据库进行增删改查。

public classClassicPersonDAO {

Contextcontext;

MyDBOpenHelperdb;

publicClassicPersonDAO(Context context) {

this.context = context;

db = newMyDBOpenHelper(context); // 创建dbopenHelper

}

// 插入

public void insert(Person p) {

// 获得一个可写的数据库

SQLiteDatabasedataBase = db.getWritableDatabase();

// 向数据库中插入一条数据

dataBase.execSQL("insert into person (name,balance)values(?,?)",

new Object[] { p.getName(),p.getBalance() });

dataBase.close();// 将数据库关闭

}

// 删除一条数据

public void delete(int id) {

SQLiteDatabasedatabase = db.getWritableDatabase();

database.execSQL("delete from person where id=?", newObject[] { id+ "" });

database.close();

}

// 更新数据库中的某条记录

public void update(Person p) {

SQLiteDatabasedata = db.getWritableDatabase();

data.execSQL("update person set name=?,balance=? where id=?",

new Object[] { p.getName(),p.getBalance(), p.getId() });

data.close();

}

// 根据id查询数据

public Person query(int i) {

SQLiteDatabasedata = db.getReadableDatabase();

Cursorc = data.rawQuery("select * from person whereid=?",

new String[] { i + "" });

Personp = newPerson();

while (c.moveToNext()) {

Integerid = c.getInt(c.getColumnIndex("id"));

Stringname = c.getString(c.getColumnIndex("name"));

Stringbalance = c.getString(c.getColumnIndex("balance"));

p.setId(id);

p.setName(name);

p.setBalance(balance);

}

db.close();

return p;

}

// 查询全部

public List<Person>queryAll() {

SQLiteDatabasedata = db.getReadableDatabase();

Cursorc = data.rawQuery("select * from person", null);

List<Person>list = newArrayList<Person>();

while (c.moveToNext()) {

Integerid = c.getInt(c.getColumnIndex("id"));

Stringname = c.getString(c.getColumnIndex("name"));

Stringbalance = c.getString(c.getColumnIndex("balance"));

Personp = newPerson();

p.setId(id);

p.setName(name);

p.setBalance(balance);

list.add(p);

}

return list;

}

// 分页查询

public List<Person>queryPage() {

SQLiteDatabasedata = db.getReadableDatabase();

Cursorc = data.rawQuery("select * from person limit20,30", null);

List<Person>list = newArrayList<Person>();

while (c.moveToNext()) {

Integerid = c.getInt(c.getColumnIndex("id"));

Stringname = c.getString(c.getColumnIndex("name"));

Stringbalance = c.getString(c.getColumnIndex("balance"));

Personp = newPerson();

p.setId(id);

p.setName(name);

p.setBalance(balance);

list.add(p);

}

return list;

}

}

更多相关文章

  1. Android中的消息机制(Handler)
  2. Android(安卓)之采用execSQL和rawQuery方法完成数据的添删改查操
  3. Android之Service 生命周期
  4. Android通过WebView实现office文档在线预览无法显示问题解决
  5. android阿里面试java基础锦集
  6. Android(安卓)改变字体颜色的三种方法
  7. 运用smali自动注入技术分析android应用程序行为
  8. Android中的Activity之间传递自定义类型的List的方法
  9. Android(安卓)如何从SD卡中读取数据?

随机推荐

  1. Android(安卓)USB状态监控(解决scheme="f
  2. (原创)Android入门教程(六)之------使用a
  3. 采用XMPP协议实现Android推送
  4. Android(安卓)数字版权保护播放器开发
  5. android开启线程的误区
  6. 开发可统计单词个数的Android驱动程序(1)
  7. [Android]Android(安卓)Design之Navigati
  8. Android数字证书
  9. android EditText彻底搞定输入框隐藏/显
  10. Android专家课程——课后小记