zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    等待事件统计信息--Wait Events Statistics
    实时监控SQL
    PHP中常用的魔术方法
    PHP生成缩略图(3)--封装类
    PHP生成缩略图(2)--等比缩略图
    PHP生成缩略图(1)--简单缩略图
    调用天气预报接口
    使用JSON实现分页
    使用AJAX实现分页
    AJAX缓存问题
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322162.html
Copyright © 2011-2022 走看看