android SQLite数据库的使用

来源:互联网 发布:手机淘宝店怎么注册 编辑:程序博客网 时间:2024/05/18 02:49


/**
使用数据库的 步骤:
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;
}
}

原创粉丝点击