Android SQLite数据库基础操作(极简)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43328457/article/details/90111420

其实很简单,就是创建一个数据库,在里面创建一个表,然后每一次操作数据库的时候都要重新打开数据库,指定当前创建的对象是可读写还是只读的,然后数据库版本号必须为整型且必须增长,最后博主有最重要的一条!!!!!!!!!!
首先呢,自己写一个MySQLiteOpenHelper类来继承SQLiteOpenHelper类并实现其中的一些方法,代码如下:
这里我是用Android封装的函数以及SQL语句在一起实现的,SQL语句已经注掉

//数据库版本号
private static Integer Version = 1;
    //在SQLiteOpenHelper的子类当中,必须有该构造函数
    public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory,
                          int version) {
        //必须通过super调用父类当中的构造函数
        super(context, name, factory, version);
    }
    //参数说明
    //context:上下文对象
    //name:数据库名称
    //param:factory
    //version:当前数据库的版本,值必须是整数并且是递增的状态
    public MySQLiteOpenHelper(Context context,String name,int version)
    {
        this(context,name,null,version);
    }
    public MySQLiteOpenHelper(Context context,String name)
    {
        this(context, name, Version);
    }
    //当数据库创建的时候被调用
    @Override
    public void onCreate(SQLiteDatabase db) {
        System.out.println("创建数据库和表");
        //创建了数据库并创建一个叫records的表
        //SQLite数据创建支持的数据类型: 整型数据,字符串类型,日期类型,二进制的数据类型
        String sql = "create table user(id int primary key,name varchar(200))";
        //execSQL用于执行SQL语句
        //完成数据库的创建
        db.execSQL(sql);
        //数据库实际上是没有被创建或者打开的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一个被调用时才会进行创建或者打开
    }
    //数据库升级时调用
    //如果DATABASE_VERSION值被改为2,系统发现现有数据库版本不同,即会调用onUpgrade()方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("更新数据库版本为:"+newVersion);
    }
}

然后在mainactivity里面执行以下一些操作,
一,创建数据库以及创建数据库的语句:

create table user(id int primary key,name varchar(200))

意思是创建一个名为user的数据库,里面有两个类,一个是primary key ——id,意思是id是这个数据库的关键词,还有一个varchar长度为200的字符,通过事件监听Button来实现以下代码:

case R.id.instablish:
                // 创建SQLiteOpenHelper子类对象
                MySQLiteOpenHelper dbHelper = new MySQLiteOpenHelper(this,"test_carson");
                //数据库实际上是没有被创建或者打开的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一个被调用时才会进行创建或者打开
                SQLiteDatabase  sqliteDatabase = dbHelper.getWritableDatabase();
                // SQLiteDatabase  sqliteDatabase = dbHelper.getReadbleDatabase();
                break;

二,更新数据库的版本号

case R.id.upgrade:
                // 创建SQLiteOpenHelper子类对象
                MySQLiteOpenHelper dbHelper_upgrade = new MySQLiteOpenHelper(this,"test_carson",2);
                // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
                SQLiteDatabase  sqliteDatabase_upgrade = dbHelper_upgrade.getWritableDatabase();
                // SQLiteDatabase  sqliteDatabase = dbHelper.getReadbleDatabase();
                break;

三,向数据库里面传入一条数据
emmm,类型有点像hashmap数组,都是键值对类型数组

 case R.id.insert:
                System.out.println("插入数据");
                // 创建SQLiteOpenHelper子类对象
                ////注意,一定要传入最新的数据库版本号
                MySQLiteOpenHelper dbHelper1 = new MySQLiteOpenHelper(this,"test_carson",2);
                // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
                SQLiteDatabase  sqliteDatabase1 = dbHelper1.getWritableDatabase();
                // 创建ContentValues对象
                ContentValues values1 = new ContentValues();
                // 向该对象中插入键值对
                values1.put("id", 1);
                values1.put("name", "carson");
                // 调用insert()方法将数据插入到数据库当中
                sqliteDatabase1.insert("user", null, values1);
                // sqliteDatabase.execSQL("insert into user (id,name) values (1,'carson')");
                //关闭数据库
                sqliteDatabase1.close();
                break;

四,查询数据库里面的数据

//点击查询数据库
        case R.id.query:
            System.out.println("查询数据");
            // 创建DatabaseHelper对象
            MySQLiteOpenHelper dbHelper4 = new MySQLiteOpenHelper(MainActivity.this,"test_carson",2);
            // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
            SQLiteDatabase sqliteDatabase4 = dbHelper4.getReadableDatabase();
            // 调用SQLiteDatabase对象的query方法进行查询
            // 返回一个Cursor对象:由数据库查询返回的结果集对象
            Cursor cursor = sqliteDatabase4.query("user", new String[] { "id",
                    "name" }, "id=?", new String[] { "1" }, null, null, null);
            String id = null;
            String name = null;
            //将光标移动到下一行,从而判断该结果集是否还有下一条数据
            //如果有则返回true,没有则返回false
            while (cursor.moveToNext()) {
                id = cursor.getString(cursor.getColumnIndex("id"));
                name = cursor.getString(cursor.getColumnIndex("name"));
                //输出查询结果
                System.out.println("查询到的数据是:"+"id: "+id+"  "+"name: "+name);
            }
            //关闭数据库
            sqliteDatabase4.close();
            break;

五,修改数据,通过寻找键的方法来改变值

 case R.id.modify:
                System.out.println("修改数据");
                // 创建一个DatabaseHelper对象
                // 将数据库的版本升级为2
                // 传入版本号为2,大于旧版本(1),所以会调用onUpgrade()升级数据库
                MySQLiteOpenHelper dbHelper2 = new MySQLiteOpenHelper(MainActivity.this,"test_carson", 2);
                // 调用getWritableDatabase()得到一个可写的SQLiteDatabase对象
                SQLiteDatabase sqliteDatabase2 = dbHelper2.getWritableDatabase();
                // 创建一个ContentValues对象
                ContentValues values2 = new ContentValues();
                values2.put("name", "zhangsan");
                // 调用update方法修改数据库
                sqliteDatabase2.update("user", values2, "id=?", new String[]{"1"});
                //关闭数据库
                sqliteDatabase2.close();
                break;

六,删除数据,通过寻找键来删除整个键值对

  case R.id.delete:
                System.out.println("删除数据");
                // 创建DatabaseHelper对象
                MySQLiteOpenHelper dbHelper3 = new MySQLiteOpenHelper(MainActivity.this,"test_carson",2);
                // 调用getWritableDatabase()方法创建或打开一个可以读的数据库
                SQLiteDatabase sqliteDatabase3 = dbHelper3.getWritableDatabase();
                //删除数据
                sqliteDatabase3.delete("user", "id=?", new String[]{"1"});
                //关闭数据库
                sqliteDatabase3.close();
                break;

七,删除数据库操作

  case R.id.delete_database:

                System.out.println("删除数据库");

                MySQLiteOpenHelper dbHelper5 = new MySQLiteOpenHelper(MainActivity.this,
                        "test_carson",2);

                // 调用getReadableDatabase()方法创建或打开一个可以读的数据库
                SQLiteDatabase sqliteDatabase5 = dbHelper5.getReadableDatabase();

                //删除名为test.db数据库
                deleteDatabase("test_carson");

必要时可以使用最后一个方法,删库跑路,一定要快(手动滑稽)!

展开阅读全文

没有更多推荐了,返回首页