第15天android:使用sqlite

http://www.verycd.com/topics/2915669/

17_传智播客Android视频教程_创建数据库与完成数据添删改查

 1.创建数据库

package com.wan;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBOpenHelper extends SQLiteOpenHelper {

    public DBOpenHelper(Context context) {
        //context,文件名,游标(使用默认的游标工厂),数据库的版本号
        super(context,"wan.db",null,1);//保存在 /data/data/<包民>/database/ 文件下
    }

    //数据库在第一次创建的时候调用的。创建完数据库文件后执行。这里一般是生成数据库表结构。
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table person(id integer primary key autoincorement,name varchar(20))");
    }

    //数据库文件版本号发生变化的时候执行的。一般是添加字段,取出字段。
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("Alter Table person Add phone varchar(12) null");
    }

}

这样就可以创建数据库和表了。

使用 sqlite expert professional 查看sqlite里面的数据和结构

数据库文件会在 /data/data/<包民>/database/

2.执行创建

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        DBOpenHelper db =new DBOpenHelper(getApplicationContext());
        db.getWritableDatabase();
        
    }

在调用

        SQLiteDatabase r=db.getWritableDatabase();
        SQLiteDatabase r1=db.getWritableDatabase();

执行两次得到的数据库是一个实例。

上面的方法,在数据库文件文件太大,就可能会报错。

3.更新、查询和分页

        //修改
        r1.execSQL("update person set name =? , phone =?", new String[] {
                "name", "891" });
        //查询
        Cursor cursor = r1.rawQuery("select * from person where id = ? ",
                new String[] { "128" });
        if (cursor.moveToFirst()) {
            int id = cursor.getInt(cursor.getColumnIndex("id"));
            String name =cursor.getString(cursor.getColumnIndex("name"));
        }
        //分页
        Cursor cursorPage = r1.rawQuery("select * from person limit 100,50",null);

18_传智播客Android视频教程_在SQLite中使用事务

1.事务使用

        //开始事务
        r1.beginTransaction();
        r1.execSQL("update person set xxx=100 where id =1");
        r1.execSQL("update person set yyy=100 where id =1");
        //结束事务
        r1.endTransaction();
        //事务的提交或回滚是 由事务标志决定的,默认情况下为false。为True的时候提交,否则回滚

第18集完。

原文地址:https://www.cnblogs.com/wanself/p/2616185.html