关于sqlite的简单使用

本文详细介绍在安卓应用中使用SQLite数据库的过程,包括创建数据库和数据表的方法,以及如何通过SQLiteOpenHelper类进行数据库的创建、升级和基本的CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

行吧,来说说今天学的东西,之前呢我们学习使用过mysql数据库,掌握了sql语言的基本使用,在安卓中使用的数据库是sqlite,但语言是一样的
在这里呢就主要弄一弄手机数据库的基本操作

-SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件

如何创建数据库和数据表

  • 1.SQLiteOpenHelper帮助类,借助这个类就可以非常简单地对数据库进行创建和升级。 SQLiteOpenHelper 是一个抽象类

  • 2.SQLiteOpenHelper 中有两个抽象方法,分别是onCreate()和 onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑

  • 3.SQLiteOpenHelper中还有两个非常重要的实例方法, getReadableDatabase()和getWritableDatabase()这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。不同的是,当数据库不可写入的时候(如磁盘空间已满)getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而getWritableDatabase()方法则将出现异常

public class MySqliteHelper extends SQLiteOpenHelper {


    public MySqliteHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL("create table user(_id integer primary key autoincrement,name varchar(20),age integer,url varchar(200))");
        db.execSQL("insert into user values(null,'name1',19,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name2',21,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name3',13,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name4',14,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name5',87,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name6',19,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name7',13,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name8',31,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name9',24,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
        db.execSQL("insert into user values(null,'name10',11,'http://t8.baidu.com/it/u=3850881067,4149073788&fm=191&app=48&size=h300&n=0&g=4n&f=JPEG?sec=1853310920&t=5daaee5e3dc9c4d191e9a06dae59dc30')");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

上面是创建过程,初始化数据

然后让我们来看一下使用,如何获得数据库对象

MySqliteHelper mySqliteHelper =new MySqliteHelper(MainActivity.this,"shujuku",null,1);
    SQLiteDatabase sqldb = mySqliteHelper.getWritableDatabase();

拿到对象之后就是增删改查的操作了

  • 1.增
  •  	1.1 第一种方法
    
  •  		sqldb.execSql(insert into 表名 values(值1,值2....))
     	1.2第二种方法
     		ContentValue c = new ContentValue ();
     		c.put(列名,值);
     		sqldb.insert(表名,不添加属性的列名,ContentValue对象)
    
  • 2.删
  •  	2.1 第一种方法
    
  •  		sqldb.execSql(delete from 表名 where....)
     	2.2第二种方法
     		
     		sqldb.delete(表名,条件,String数组(对应的值))
    
  • 3.改
    •    	3.1 第一种方法
      
  •  		sqldb.execSql(uptade 表名 set id = 新值 where....)
     		3.2第二种方法
     		ContentValue c = new ContentValue ();
     		c.put(列名,值);
     		sqldb.update(表名,新值语句,新值ContentValue对象,条件,条件对应值String[])
    
    • 4.查
    •    	4.1 第一种方法
      
  •  		sqldb.rawquery(select * from 表明)  ==》 cuscor
     		4.2第二种方法
     		sqldb.query(“表名”,要查列String[],条件,条件对应值string[],分组,having,排序,limit)  ==》 cuscor
    
while (cursor.moveToNext()){
                    int id = cursor.getInt(cursor.getColumnIndex("_id"));
                    String name = cursor.getString(cursor.getColumnIndex("name"));
                    int age = cursor.getInt(cursor.getColumnIndex("age"));
                    str = cursor.getString(cursor.getColumnIndex("url"));
                            bug = getBytes(str);

                    Log.i("###", "getUsersMethod1: "+bug.length);
                    Bitmap bitmap = BitmapFactory.decodeByteArray(bug, 0, bug.length);
          
                }

今天的东西不知道该怎么展示,反正就是这个了啦

INTERESTING!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值