Android 开发 SQLite数据库
2015-05-22 14:59
120 查看
新建project db
在src新建服务包service,包中新建类DBOpenHelper
并在superclass中继承android.database.sqlite.SQLiteOpenHelper(因为这个类是静态的,无法实例化)类
类中的两个方法,如果传入参数显示arg0,改为db <SQLiteDatabase db> <SQLiteDatabase db, int oldVersion, int newVersion>
因为父类没有构造区,需要自己添加(修正错误即可)
DBOpenHelper
新建一个domain包,新建一个Person类,用来保存数据
其中包括id,name,phone
生成写入和读取方法
package test.domain;
public class Person
{
private Integer id;
private String name;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
在service包中新建一个PersonService类,用来对数据库进行增删改查
package test.service;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import test.domain.Person;
public class PersonService
{
private DBOpenHelper dbOpenHelper;
public PersonService(Context context)
{
super();
this.dbOpenHelper = new DBOpenHelper(context);//实例化操作对象
}
//增
public void save(Person person)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//取得数据库操作实例
db.execSQL("insert into person(name, phone)values(?,?)",new Object[]{person.getName(), person.getPhone()});
//执行输入的SQL语句
//db.close();如果在应用中只在一处使用数据库,数据库可以不关闭,来提升性能
}
//删
public void delete(Integer id)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//取得数据库操作实例
db.execSQL("delete from person where person id = ?",new Object[]{id});
}
//改
public void update(Person person)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//取得数据库操作实例
db.execSQL("update person set name=?,phone=? where personid=?",new Object[]{person.getName(), person.getPhone(),person.getId()});
}
//查
public Person find(Integer id)
{
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();//取得数据库操作实例
Cursor cursor = db.rawQuery("select * from person where personid=?", new String[]{id.toString()});
//得到了一个Cursor游标对象,对查询返回的结果集进行随机访问。可以通过cursor移动指针,对查询结果进行访问
if (cursor.moveToFirst())
{
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
return new Person(personid,name,phone);//在Person类中增加无参数构造器
}
cursor.close();//关闭cursor结果集
return null;
}
//分页方法
//offset表示跳过前面多少条记录 maxResult表示获取多少条记录
public List<Person> getScrollData(int offset,int maxResult)
{
List<Person>persons = new ArrayList<Person>();
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();//取得数据库操作实例
Cursor cursor = db.rawQuery("select * from person order by personid asc limit ?,?",
new String[]{String.valueOf(offset), String.valueOf(maxResult)});
while (cursor.moveToNext())
{
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
persons.add(new Person(personid,name,phone));
}
cursor.close();
return persons;
}
//得到是数据库表的记录数,即统计
public long getCount()
{
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();//取得数据库操作实例
Cursor cursor = db.rawQuery("select count(*) from person",null);
cursor.moveToFirst();
long result = cursor.getLong(0);
cursor.close();
return result;
}
}
在src新建服务包service,包中新建类DBOpenHelper
并在superclass中继承android.database.sqlite.SQLiteOpenHelper(因为这个类是静态的,无法实例化)类
类中的两个方法,如果传入参数显示arg0,改为db <SQLiteDatabase db> <SQLiteDatabase db, int oldVersion, int newVersion>
因为父类没有构造区,需要自己添加(修正错误即可)
DBOpenHelper
package test.service; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context) //新建数据库默认保存在 包/databases/ { super(context, "me.db", null, 2); //第二个参数name:数据库名称 //第三个参数factory:游标工厂,输入null表示使用系统默认 //第四个参数version:表示数据库文件的版本号,不能为0 } @Override public void onCreate(SQLiteDatabase db) //数据库每一次被创建时调用的方法 { db.execSQL("CREATE TABLE person(personid integer primary key autoincrement, name varchar(20))");//输入SQL语句 //本SQL语句含义:创建表,名字为person,组件为personid, autoincrement表示组件是增长型,最后表示name字段 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)//数据库版本号发生变更时被调用 { db.execSQL("ALTER TABLE person ADD phone VARCHAR(12) NULL");//输入SQL语句 //本SQL语句含义:在表person中添加phone字段,允许为空 } }
新建一个domain包,新建一个Person类,用来保存数据
其中包括id,name,phone
生成写入和读取方法
package test.domain;
public class Person
{
private Integer id;
private String name;
private String phone;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
在service包中新建一个PersonService类,用来对数据库进行增删改查
package test.service;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import test.domain.Person;
public class PersonService
{
private DBOpenHelper dbOpenHelper;
public PersonService(Context context)
{
super();
this.dbOpenHelper = new DBOpenHelper(context);//实例化操作对象
}
//增
public void save(Person person)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//取得数据库操作实例
db.execSQL("insert into person(name, phone)values(?,?)",new Object[]{person.getName(), person.getPhone()});
//执行输入的SQL语句
//db.close();如果在应用中只在一处使用数据库,数据库可以不关闭,来提升性能
}
//删
public void delete(Integer id)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//取得数据库操作实例
db.execSQL("delete from person where person id = ?",new Object[]{id});
}
//改
public void update(Person person)
{
SQLiteDatabase db = dbOpenHelper.getWritableDatabase();//取得数据库操作实例
db.execSQL("update person set name=?,phone=? where personid=?",new Object[]{person.getName(), person.getPhone(),person.getId()});
}
//查
public Person find(Integer id)
{
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();//取得数据库操作实例
Cursor cursor = db.rawQuery("select * from person where personid=?", new String[]{id.toString()});
//得到了一个Cursor游标对象,对查询返回的结果集进行随机访问。可以通过cursor移动指针,对查询结果进行访问
if (cursor.moveToFirst())
{
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
return new Person(personid,name,phone);//在Person类中增加无参数构造器
}
cursor.close();//关闭cursor结果集
return null;
}
//分页方法
//offset表示跳过前面多少条记录 maxResult表示获取多少条记录
public List<Person> getScrollData(int offset,int maxResult)
{
List<Person>persons = new ArrayList<Person>();
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();//取得数据库操作实例
Cursor cursor = db.rawQuery("select * from person order by personid asc limit ?,?",
new String[]{String.valueOf(offset), String.valueOf(maxResult)});
while (cursor.moveToNext())
{
int personid = cursor.getInt(cursor.getColumnIndex("personid"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String phone = cursor.getString(cursor.getColumnIndex("phone"));
persons.add(new Person(personid,name,phone));
}
cursor.close();
return persons;
}
//得到是数据库表的记录数,即统计
public long getCount()
{
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();//取得数据库操作实例
Cursor cursor = db.rawQuery("select count(*) from person",null);
cursor.moveToFirst();
long result = cursor.getLong(0);
cursor.close();
return result;
}
}
相关文章推荐
- Android开发之解决sqlite数据库乱码
- android开发之使用SQLite数据库存储
- Android开发案例:SQLite数据库和ListView列表结合
- [置顶] Android,java,php开发最基本的知识,mysql sqlite数据库的增删改查代理,sql语句
- Android开发之Sqlite数据库
- Android开发——数据持久存储_SQLite数据库
- Android开发当中SQLite数据库的应用
- Android开发之sqlite数据库的应用
- android开发之使用SQLite数据库(db文件)
- Android应用开发---SQLiteOpenHelper管理SQLite数据库、ListView
- Android开发之SQLite数据库
- Android开发教程之 SQLite数据库的使用
- Android开发笔记:如何使用预先制作好的SQLite数据库(整理自网络)
- 从零开始学android开发-查看sqlite数据库
- Android开发怎么查看和管理sqlite数据库
- Android 开发应用SQLite数据库的简单使用(三)
- Android开发学习之SQLite数据库初探
- Android开发之数据存储与访问(3)-SQLite数据库
- 使用android快速开发框架afinal的FinalDb操作android sqlite数据库
- ANDROID开发之SQLite数据库操作