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;
}
}
使用数据库的 步骤:
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;
}
}
相关文章推荐
- Android数据库SQLite的使用
- Android 开发中使用 SQLite 数据库
- Android数据库SQLite的使用
- Android中如何使用命令行查看内嵌数据库sqlite3
- Android SQLite数据库使用
- Android数据库SQLite使用详解二 : 学生管理系统的简单实现
- Android中如何使用命令行查看内嵌数据库SQLite3
- Android 使用数据库 SQlite
- Android SQLite数据库的详细使用
- Android数据库SQLiteDatabase的使用
- Android 高手进阶教程(十三)之----Android 数据库SQLiteDatabase的使用!
- 【转】Android使用SQLiteOpenHelper对数据库进行版本管理【学习记录】
- android开发(24)使用SQLiteOpenHelper的onUpgrade实现数据库版本升级
- android 数据库sqlite的使用
- Android数据库(SQLiteDatabase)使用小结
- Android 开发中使用 SQLite 数据库
- Android中使用SQLiteOpenHelper管理SD卡中的数据库
- Android中的数据库操作及内置SQLite使用和事务
- 浅谈android本地数据库(SQLite)使用
- 3.1Android中,Sqlite轻量级数据库的使用