`

Android数据库SQLiteDatabase

 
阅读更多

操作原理:

Android系统中的数据库,以文件的形式存在。

同其他数据库一样,SQLiteDatabase数据库简单来说也是对增删该查操作。

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

如何清除应用程序数据库 ?

将应用程序卸载

 

sqlite数据库需要有一个_id主键,如果不是在查询的时候可以使用select id as _id.... ,这样获取的cursor结果集中id就变为了指定的别名_id

 

数据库在查询时,query第二个参数column数据指定为null表示查询所有记录。

 

在程序中为了兼容经常要用到已过时的方法,当时高版本运行时会有警告提示,可以通过Build.VERSON.SDK_INT获取到版本,

在根据不同版本,使用不同方法。

 

SQL语句回顾

Desc降序 select id form person desc

Asc升序

 

Cursor

数据库游标类似一个指针,初始位置是指向第一条记录的上一行,调用moveToNext方法时会移动到第一条记录的位置。

 

代码实现:

1.创建数据库

2.对数据库进行增删改查

 

创建数据库

a.创建一个类继承SQLiteOpenHelper类

b.创建定义类的对象,调用getReadableDatabase或者getWriteableDatabase,创建数据库成功。

 

 

package com.itheima.db;

 

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;

 

public class PersonOpenDBHelper extends SQLiteOpenHelper {

 

/**

 * 构造函数

 * @param context 上下文提供信息和环境

 * @param name 数据库文件名称

 * @param factory 游标工厂,如果为null则默认使用系统提供

 * @param version 数据库版本,从1开始,如果小于1会抛出异常

 */

public PersonOpenDBHelper(Context context) {

super(context, "person.db", null, 1);

}

 

/**

 * 当数据库第一次被创建的时候调用

 * 适合在这里定义表结构

 */

@Override

public void onCreate(SQLiteDatabase db) {

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) {

 

}

 

}

 

package com.itheima.db;

 

import android.os.Bundle;

import android.app.Activity;

import android.view.Menu;

 

/**

 * 创建数据库并实现增删改成功能

 * android创建数据库:

 * 1.创建一个类继承SQLiteOpenHelper

 * 2.创建定义类的对象,调用getReadableDatabase或者getWriteableDatabase,创建数据库成功。

 * @author hzd

 *

 */

public class MainActivity extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        

        //创建SQLiteOpenHelper对象,获取一个可读或可写的数据库

        PersonOpenDBHelper helper = new PersonOpenDBHelper(this);

        helper.getWritableDatabase();

    }

 

    

}

 

 

对数据库进行增删改查

package com.itheima.db.dao;

 

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

 

import com.itheima.db.PersonOpenDBHelper;

 

public class PersonDao {

private PersonOpenDBHelper helper;

public PersonDao(Context context) {

helper = new PersonOpenDBHelper(context);

}

 

/**

 * 添加一条记录

 * @param name 名字

 * @param phone 电话

 */

public void add(String name,String phone) {

SQLiteDatabase db = helper.getWritableDatabase();

db.execSQL("insert into person(name,phone) values(?,?)",new Object[]{name,phone});

}

/**

 * 根据用户名查找一条记录

 * @param name 名字

 * @param phone 电话

 */

public int find(String name) {

SQLiteDatabase db = helper.getWritableDatabase();

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

int id = -1;

if(cursor.moveToFirst()) {

id = cursor.getInt(0);

}

return id;

}

/**

 * 修改一条记录

 * @param name 名字

 * @param phone 电话

 */

public void update(String phone,int id) {

SQLiteDatabase db = helper.getWritableDatabase();

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

}

/**

 * 添加一条记录,根据id

 * @param name 名字

 * 

 */

public void delete(int id) {

SQLiteDatabase db = helper.getWritableDatabase();

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

}

}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics