您的位置:首页 > 移动开发 > Android开发

android SQLite数据库的使用

2013-06-07 15:59 246 查看
/**

使用数据库的 步骤:

1. extends SQLiteOpenHelper类,

在构造方法里 创建数据库名 版本,onCreate()方法只被程序 第一次创建的时候使用,创建数据库表,onUpgrade()当版本号改变的时候使用 作用修改数据库的 表结构,创建新的的表等

*/

1.继承SQLiteOpenHelper

public class PersonDBOpenHelper extends SQLiteOpenHelper {

/**

*

* @param context

* 上下文 person.db 生成的数据库的名称 CursorFactory 查询结果集的游标工厂. null

* 使用系统默认的游标工厂 version 1 数据库的版本号 >=1

*/

public PersonDBOpenHelper(Context context) {

super(context, "person.db", null, 3); // 创建了一个数据库 为"person.db ,当前版本为3

}

/**

* 当数据库 第一次被创建的时候 执行的方法. 建立数据库的表结构.

*/

@Override

public void onCreate(SQLiteDatabase db) {

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

db.execSQL("create table person (id integer primary key autoincrement, name varchar(20),phone varchar(20))");

}

/**

* 当数据库的版本发生增加的时候 调用的方法 适合于 添加新的数据库的表 或者 更改数据库的表结构.

*/

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

System.out.println("数据库的版本号 增加了");

db.execSQL("create table person2 (id integer primary key autoincrement, name varchar(20),phone varchar(20))");

}

}

--------------------------------------------------------------------------------

2.创建数据库的增,删,改,查

public class PersonDao {

private PersonDBOpenHelper helper;

public PersonDao(Context context) {

helper = new PersonDBOpenHelper(context); //在构造方法中获取 获取 数据库的对象,此时并不是真正的创建数据库对象,只有在读和取的时候才是真正的创建了 数据库

}

/**

* 添加一条记录到数据库

* @param name

* @param number

*/

public void add (String name,String number){

if(find(name)){//已经存在联系人 直接返回 不添加

return;

}

SQLiteDatabase db = helper.getWritableDatabase(); //创建了一个可以写的 数据库

if(db.isOpen()){ // 判断数据库 是否是开启的

db.execSQL("insert into person (name,phone) values(?,?)", new Object[]{name,number}); //向person表里添加一条数据

db.close(); 使用后关闭数据库

}

}

/**

* 删除一条记录

*/

public void delete(String name){

//delete from person where name='zhangsan'

SQLiteDatabase db = helper.getWritableDatabase();

if(db.isOpen()){

db.execSQL("delete from person where name=?", new Object[]{name});

db.close();

}

}

/**

* 更改一条数据库的记录

* @param oldname 旧的姓名

* @param newname 新的姓名 可以为空 代表不修改

* @param newnumber 新的电话

*/

public void update(String oldname, String newname,String newnumber){

if(TextUtils.isEmpty(newnumber)){

newname = oldname;

}

SQLiteDatabase db = helper.getWritableDatabase();

if(db.isOpen()){

db.execSQL("update person set phone =?, name=? where name=?", new Object[]{newnumber,newname,oldname});

db.close();

}

}

/**

* 查找一条记录

* @param name

* @return

*/

public boolean find(String name){

boolean result = false;

SQLiteDatabase db = helper.getReadableDatabase();

if(db.isOpen()){

Cursor cursor = db.rawQuery("select * from person where name=?", new String[]{name});

if(cursor.moveToFirst()){

result = true;

}

cursor.close();

db.close();

}

return result;

}

/**

* 查找所有的person信息

* @return

*/

public List<Person> findAll(){

List<Person> persons = new ArrayList<Person>();

SQLiteDatabase db = helper.getReadableDatabase();

if(db.isOpen()){

Cursor cursor = db.rawQuery("select id,name,phone from person", null);

while(cursor.moveToNext()){

String id = cursor.getString(0);

String name = cursor.getString(1);

String phone = cursor.getString(2);

Person person = new Person(id, name, phone);

persons.add(person);

person = null;

}

cursor.close();

db.close();

}

return persons;

}

}

-------------------------------------------

书写sql 语句 方式二

package cn.itcast.db2.dao;

import java.util.ArrayList;

import java.util.List;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.text.TextUtils;

import cn.itcast.db2.PersonDBOpenHelper;

import cn.itcast.db2.domain.Person;

public class PersonDao {

private PersonDBOpenHelper helper;

public PersonDao(Context context) {

helper = new PersonDBOpenHelper(context);

}

/**

* 添加一条记录到数据库

*

* @param name

* @param number

*/

public boolean add(String name, String number) {

SQLiteDatabase db = helper.getWritableDatabase();

long id = -1;

if (db.isOpen()) {

// insert into person (name,phone) values(,)

// db.execSQL("insert into person (name,number) values(?,?)", new

// Object[]{name,number});

ContentValues values = new ContentValues();

values.put("name", name);

values.put("number", number);

id = db.insert("person", null, values);

db.close();

}

if (id != -1) {

return true;

} else {

return false;

}

}

/**

* 删除一条记录

*/

public boolean delete(String name) {

int result = 0;

// delete from person where name='zhangsan'

SQLiteDatabase db = helper.getWritableDatabase();

if (db.isOpen()) {

// db.execSQL("delete from person where name=?", new

// Object[]{name});

result = db.delete("person", "name=?", new String[] { name });

db.close();

}

if (result > 0) {

return true;

} else {

return false;

}

}

/**

* 更改一条数据库的记录

*

* @param oldname

* 旧的姓名

* @param newname

* 新的姓名 可以为空 代表不修改

* @param newnumber

* 新的电话

*/

public void update(String oldname, String newname, String newnumber) {

if (TextUtils.isEmpty(newnumber)) {

newname = oldname;

}

SQLiteDatabase db = helper.getWritableDatabase();

if (db.isOpen()) {

// db.execSQL("update person set phone =?, name=? where name=?", new

// Object[]{newnumber,newname,oldname});

ContentValues values = new ContentValues();

values.put("name", newname);

values.put("number", newnumber);

db.update("person", values, "name=?", new String[] { oldname });

db.close();

}

}

/**

* 查找一条记录

*

* @param name

* @return

*/

public boolean find(String name) {

boolean result = false;

SQLiteDatabase db = helper.getReadableDatabase();

if (db.isOpen()) {

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

if (cursor.moveToFirst()) {

result = true;

}

cursor.close();

db.close();

}

return result;

}

/**

* 查找所有的person信息

*

* @return

*/

public List<Person> findAll() {

List<Person> persons = new ArrayList<Person>();

SQLiteDatabase db = helper.getReadableDatabase();

if (db.isOpen()) {

// Cursor cursor = db.rawQuery("select id,name,phone from person",

// null);

Cursor cursor = db.query("person", new String[] { "id", "name",

"number", "account" }, null, null, null, null, null);

while (cursor.moveToNext()) {

String id = cursor.getString(0);

String name = cursor.getString(1);

String phone = cursor.getString(2);

String account = cursor.getString(3);

Person person = new Person(id, name, phone, account);

persons.add(person);

person = null;

}

cursor.close();

db.close();

}

return persons;

}

/**

* 查找所有的person信息 的结果集游标

*

* @return

*/

public Cursor findAllCursor() {

Cursor cursor = null;

SQLiteDatabase db = helper.getReadableDatabase();

if (db.isOpen()) {

// Cursor cursor = db.rawQuery("select id,name,phone from person",

// null);

// cursor = db.query("person", new String[] { "id", "name", "number",

// "account" }, null, null, null, null, null);

cursor = db.rawQuery("select id as _id,name,number,account from person",

null);

//下面的这一段代码 必须要写.

cursor.getCount();

db.close();

}

return cursor;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: