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

Android实例demo8之Sqlite的使用(sql语句、android api)

2014-11-25 17:24 465 查看
在android中使用数据库,可以使用sql语句,也可以使用android对sql封装的api。

android对sql封装的api的操作添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。

SQLiteOpenHelper 这个类用于数据库的创建。

/**

* 数据库的构造函数

* @param context

*

* name 数据库名称

* factory 游标工程

* version 数据库的版本号 不可以小于1

*/

public Sqlitedatabasedb(Context context, String name,

CursorFactory factory, int version) {

super(context, name, null, version);

// TODO Auto-generated constructor stub

}

/**

* 数据库第一次创建时回调此方法.

* 初始化一些表

*/

@Override

public void onCreate(SQLiteDatabase db) {

// TODO Auto-generated method stub

// 操作数据库

String sql = "create table person(_id integer primary key, name varchar(10), age integer);";

db.execSQL(sql); // 创建person表

}

@Override

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

// TODO Auto-generated method stub

Log.i("db upgrade", TAG);

}

然后我们还要封装一个实例对象,这个比较简单,这里就不详述了。

然后我们要封装一个类,实现基本的增删查改操作:

private Sqlitedatabasedb mSqlitedatabasedb;

public persondao(Context mContext,String name,int version){

mSqlitedatabasedb = new Sqlitedatabasedb(mContext, name, null, version);

Log.i("sssss", "persondao");

}

/**

* 添加到person表一条数据

* @param person

*/

public void insert(person mPerson){

SQLiteDatabase dbDatabase = mSqlitedatabasedb.getWritableDatabase();

if (dbDatabase.isOpen()) {

dbDatabase.execSQL("insert into person(name, age) values(?, ?);", new Object[]{mPerson.getName(), mPerson.getAge()});

dbDatabase.close();

}

Log.i("insert", "persondao");

}

/**

* 更据id删除记录

* @param id

*/

public void deleate(int id){

SQLiteDatabase dbDatabase = mSqlitedatabasedb.getWritableDatabase();

if (dbDatabase.isOpen()) {

dbDatabase.execSQL("delete from person where _id = ?;", new Integer[]{id});

dbDatabase.close();

}

}

/**

* 根据id找到记录, 并且修改姓名

* @param id

* @param name

*/

public void upgrade(int id,String name){

SQLiteDatabase dbDatabase = mSqlitedatabasedb.getWritableDatabase();

if (dbDatabase.isOpen()) {

dbDatabase.execSQL("update person set name = ? where _id = ?;", new Object[]{name, id});

dbDatabase.close();

}

}

/**

* 查询所有内容

* @param id

* @param name

*/

public List<person> findall(){

SQLiteDatabase dbDatabase = mSqlitedatabasedb.getReadableDatabase();

List<person> mList = new ArrayList<person>();

int id;

String name;

int age;

if (dbDatabase.isOpen()) {

Cursor cursor = dbDatabase.rawQuery("select _id, name, age from person;", null);

if (cursor!=null && cursor.getCount()>0) {

while(cursor.moveToNext()) {

id = cursor.getInt(0);

name = cursor.getString(1);

age = cursor.getInt(2);

mList.add(new person(id, name, age));

}

}

dbDatabase.close();

}

return mList;

}

/**

* 根据id查询人

* @param id

* @return

*/

public person queryItem(int id) {

SQLiteDatabase db = mSqlitedatabasedb.getReadableDatabase(); // 获得一个只读的数据库对象

if(db.isOpen()) {

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

if(cursor != null && cursor.moveToFirst()) {

int _id = cursor.getInt(0);

String name = cursor.getString(1);

int age = cursor.getInt(2);

db.close();

return new person(_id, name, age);

}

db.close();

}

return null;

}

最后看看我们的测试方法:

persondao mPersondao = new persondao(this, "zhengwei.db", 1);

mPersondao.insert(new person(0,"xiaoming", 20));

mPersondao.insert(new person(0,"zhangsan", 25));

mPersondao.insert(new person(0,"eeeee", 26));

List<person> mList = new ArrayList<person>();

mList = mPersondao.findall();



for (person mPerson:mList) {

Log.i(""+mPerson, "testdb");

}

mPersondao.upgrade(2, "虎虎");

person mPerson = new person();

mPerson = mPersondao.queryItem(2);

Log.i(""+mPerson, "testdbfind");

这个是使用基本的sql语句进行操作,当然也可以使用android提供的API实现数据库的增删改查操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: