安卓开发---基于SQLite实现增删查改

目录

一、关于SQLite

二 、SQLiteDatabase、SQLiteOpenHelper、Cursor

三、实现增删查改

四、效果图

五、项目地址


一、关于SQLite

SQLite体积小,对于简单开发很方便,而且很多软件都有自带。而且开发支持也多。SQLite的核心引擎本身不依赖第三方的软件,在我们开发时直接使用即可。

二 、SQLiteDatabase、SQLiteOpenHelper、Cursor

  1. 创建SQLiteOpenHelper 之后在类创建数据库,创建表等等
  2. 创建SQLiteDatabase 之后操作数据库
  3. ContentValues是唯一插入数据库的数据类型 如果你使用对象就必须将Object转成ContentValues
  4. 数据库的数据提取返回cursor,之后手动的将cursor将数据取出来把数据封装成Object之后再使用

SQLiteDatabase:

SQLiteDatabase是SQLite数据库类, 用于创建数据库.

SQLiteOpenHelper

SQLiteOpenHelper这个类用来管理数据库。包括创建更新 数据库。所以我们只要继承SQLiteOpenHelper类来就可以对数据库进行管理。

Cursor:

SQLite查询的结果是返回一个游标(Cursor)。类似于我们在java学习数据库操作中的ResultSet类差不多, rawQuery(String sql, String[] selectionArgs)。通过移动游标来进行数据的查询。

三、实现增删查改

使用数据库前提是有一个数据库, 要进行数据操作就要对表进行操作

创建SQLite数据库,首先的创建一个 SQLiteOpenHeper  的子类并实现相应的方法(如下)。

创建数据库:

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL(CreateStudentInfo);    //此处的CreateStudentInfo是创建表的语句
} 
@Override 
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
     // TODO Auto-generated method stub 
}

 在我们使用这个类时, 构造方法就会新建数据库

public DBHelper(Context context){ 
    super(context,DATABASE_NAME,null,DATABASE_VERSION); 
}

 

使用数据库

new了SQLiteOpenHeper的子类后新建数据库就已经完成. 然后通过getReadAbleDatabase()或getWriteableDatabase()方法来获取一个数据库实例。可以在onCreate()方法中对数据库进行操作。不过为了便于管理, 最好重新写一个专门的工具类。 

新建表:

其实在onCreate()方法中就是在创建表:

public static final String SqlCreatTable = "create table student ("
            + "number integer primary key, "
            + "gender text , "
            + "name text,"
            + "birth text,"
            + "native_place text,"
            + "specialty text,"
            + "phone text)";
db.execSQL(SqlCreatTable );

插入数据:

public void add(List<Person> persons){
        db.beginTransaction();
        try{
            for (Person p:persons){
                db.execSQL("INSERT INTO person VALUES(null,?,?,?)",
                        new Object[]{p.getName(),p.getAge(),p.getInfo()});
            }
            db.setTransactionSuccessful();
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            db.endTransaction();
        }
    }

删除数据(按name字段删除):

public void deleteOldPerson(Person p){
        db.delete("person","name=?",new String[]{p.getName()});
    }

查询数据:

用cursor查询,在按列读取cursor的每一组数据。

public List<Person> findAllPerson(){
        ArrayList<Person> persons = new ArrayList<Person>();
        Cursor c = db.rawQuery("SELECT * FROM person", null);
        while(c.moveToNext()){
            Person p = new Person();
            p.set_id(c.getInt(c.getColumnIndex("_id")));
            p.setName(c.getString(c.getColumnIndex("name")));
            p.setAge(c.getInt(c.getColumnIndex("age")));
            p.setInfo(c.getString(c.getColumnIndex("info")));
            persons.add(p);
        }
        c.close();
        return persons;
    }

更新数据:

还是根据name字段更新,数据是一个list形式封装好的。

public void update(Person p){
        ContentValues cv = new ContentValues();
        cv.put("age",p.getAge());
        cv.put("info",p.getInfo());
        db.update("person",cv,"name=?",new String[]{p.getName()});
    }

四、效果图

五、项目地址

项目地址: SQLiteLearn

Github:SQLiteLearn

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值