Android Sqlite 增删改查

模拟 查询所有数据,增加一条数据,修改某一条数据,删除某一条数据:

这里写图片描述


SQLiteOpenHelper 帮助类的介绍:

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

public class MySQLiteOpenHelper extends SQLiteOpenHelper {

    /**
     * 数据库的名称
     */
    private static final String DATABASE_NAME = "PersonDB.db";

    /**
     * 数据库的版本号,以后要升级数据库,修改版本号为 +1 即可
     */
    private static final int DATABASE_VERSION = 2;

    private static MySQLiteOpenHelper instance;

    /**
     * 单例模式
     * @param context 传入上下文
     * @return 返回MySQLiteOpenHelper对象
     */
    public static MySQLiteOpenHelper getInstance(Context context) {
        if (null == instance) {
            synchronized (MySQLiteOpenHelper.class) {
                if (null == instance) {
                    instance = new MySQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
                }
            }
        }
        return instance;
    }

    // 构造方法不对外暴露
    private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    // 构造方法不对外暴露
    private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
        super(context, name, factory, version, errorHandler);
    }

    // 初始化操作,会执行onCreate
    @Override
    public void onCreate(SQLiteDatabase db) {
        // 创建一个 student_table表
        db.execSQL("create table student_table(_id integer primary key autoincrement, name text);");
    }

    // 用于升级数据库,当Version 变动了,就会调用onUpgrade方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("alter table student_table add age integer null");
    }
}

生成的表结构:
这里写图片描述


以下代码是,curd操作:

     @Override
    public void onClick(View v) {
        MySQLiteOpenHelper sqLiteOpenHelper = MySQLiteOpenHelper.getInstance(MainActivity.this);
        SQLiteDatabase wdb = sqLiteOpenHelper.getWritableDatabase();
        SQLiteDatabase rdb = sqLiteOpenHelper.getReadableDatabase();

        switch (v.getId()) {
            /*
            case R.id.bt_createdb:
                sqLiteOpenHelper.getWritableDatabase();
                break;
            */

            case R.id.bt_select:
                // Cursor 就是ResultSet
                Cursor cursor = rdb.rawQuery("select _id,name,age from student_table;", null);
                // 往下查找只,继续移动的查询下一个
                while(cursor.moveToNext()) {
                    int _id = cursor.getInt(cursor.getColumnIndex("_id"));
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    int age = cursor.getInt(cursor.getColumnIndex("age"));
                    Log.d(TAG, "_id:" + _id + "  name:" + name + "  age:" + age);
                }
                break;

            case R.id.bt_add:
                wdb.execSQL("insert into student_table(name,age) values('刘德利',19);");
                break;

            case R.id.bt_update:
                wdb.execSQL("update student_table set name='德利' where _id = 1;");
                break;

            case R.id.bt_delete:
                wdb.execSQL("delete from student_table where _id = 1;");
                break;

            default:
                break;
        }
    }

执行结果:
这里写图片描述


说说 Cursor:

游标最开始是停留在最前面的:
这里写图片描述

cursor.moveToNext();
这里写图片描述

cursor.moveToNext(),的意思是游标往下移动,移到第一行:
这里写图片描述


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006

原文地址:https://www.cnblogs.com/android-deli/p/10322162.html