加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLite使用方法

发布时间:2020-12-13 00:12:43 所属栏目:百科 来源:网络整理
导读:1.SQLite介绍 官方网站 http://www.sqlite.org 它是一个非常小的关系型数据库,小到占用的资源几乎可以忽略不计,但是它提供的功能又比较齐全 2.SQLiteOpenHelper使用方法 相当于说这个ópenHelper是Android自己定义的一种创建数据库的方法,它是一个抽象类
1.SQLite介绍

官方网站 http://www.sqlite.org
它是一个非常小的关系型数据库,小到占用的资源几乎可以忽略不计,但是它提供的功能又比较齐全

2.SQLiteOpenHelper使用方法

相当于说这个ópenHelper是Android自己定义的一种创建数据库的方法,它是一个抽象类,所以必须通过自己创建类来继承它。继承了以后本身就具备了比如说getReadableDatabase()和getWritableDatabase()这些重要的方法,通过调用它们,直接就会返回SQLiteDatabase对象,从而达到创建空数据库的目的。

然后里面有2个重要的抽象方法,分别是onCreate 和onUpdate方法。实现这2个方法,这样,在创建,升级数据库的时候就会分别执行里面的代码。

有一种说法就是,因为本身SQLite只能进行增删改查,没法对数据库进行创建和升级,所以就加入了这个助手类。

SQLiteOpenHelper是一个抽象类,我们必须继承它。由于它新创建了有参的构造函数,所以继承的时候,必须在子类中创建一个含有同样参数的构造函数,里面的操作是调用父类的有参的构造函数。

//DatabaseHelper作为一个访问SQLite的助手类,提供2个方面的功能
//1.getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabase对象,通过该对象可以对数据库进行操作
//2.提供了onCreate()和onUpgrade()2个回调函数,允许我们在创建和升级数据库时,进行自己的操作

程序例子:

public class DatabaseHelper extends SQLiteOpenHelper{
//在SQLiteOpenHelper的子类中,必须有这个构造函数
//context 就是一个Activity,name是指数据库的表名,factory暂时不管,传递空值就行
//version为当前数据库的版本,一定是正数,且呈现递增趋势
public DatabaseHelper(Context context,String name,CursorFactoryfactory,int version){
//必须通过super调用父类中的构造函数
//其实在Eclipse里面写这个函数的时候,相关的需要实现的函数都会自动生成出来,只是要养成习惯记住
super(context,name,factory,version);
}
//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到SQLiteDatabase对象的时候,才会调用这个方法
public void onCreate(SQLiteDatabase db){
System.out.println("create a database");
//execSQL函数用于执行SQL语句,貌似这个地方是一个字符串类型,但是具体怎样裁减这段字符串我还没搞清楚。
db.execSQL("create table user(id int,name varchar(20))");
}
public void onUpgrade(SQLiteDatabase db,int oldVersion,intnewVersion){
System.out.println("upgrade a database");
}
}
getReadableDatabase()
getWritableDatabase()

2个回调函数
onCreate(SQLiteDatabase db)

onUpgrade(SQLiteDatabase db,int newVersion)


3.使用adb访问SQLite

这个只要插入Device,就可以使用,具体的安装和配置请参见博客里面Android文件夹里面有一篇关于ADB的笔记
也就是说呢,如果使用这个,那么就可以以传统linux的操作方法来操作手机里面的文件系统。使用比如ls,cd,以及标准SQL数据库的操作命令,会很方便。

每当我们创建一个工程,都会指明一个package名字,这个东西就会自动在/data/data/路径里面生成一个对应的文件夹。

4.创建和升级数据库

举个例子,假如在一个页面里面有多个按钮,每一个按钮执行一种数据库操作。那么就要创建一个xml文件,一个类。假设这个类叫做SQLiteActivity.java

创建:
class CreateListener implements OnClickListener{
public void onClick(View v){
//先创建一个DatabaseHelper的对象
DatabaseHelper dbHelper = newDatabaseHelper(SQLiteActivity.this,"Joshua ",null,1);
//只有调用了getReadableDatabase() 或者 getWritableDatabase()方法,才会真正地创建数据库
SQLiteDatabase db = dbHelper.getReadableDatabase();
}
}

更新版本:
class UpgradeListener implements OnClickListener{
DatabaseHelper dbHelper = newDatabaseHelper(SQLiteActivity.this,2);
SQLiteDatabase db = dbHelper.getReadableDatabase();
}

可能内部实现是这样的,因为无论所创建还是升级都是先创建一个OpenHelper的对象,然后调用getReadableDatabase方法,有意思的就是版本号了,如果第一次创建,那么版本号为初始值,那么系统默认自动调用onCreate方法,而不调用onUpgrade方法,并且将这个版本号赋值给onUpgrade方法中的形参oldVersion,一旦同一个名字的数据库版本号发生变更,系统就会通过比对发现,然后忽略掉onCreate方法,转而直接调用onUpgrade方法。这可能就是SQLite数据库在android的内部实现。

5.增,删,改,查

插入:

class InsertListener implements OnClickListener{
ContentValues values=new ContentValues();
values.put("id",1);
values.put("name","joshua");
DatabaseHelper dbHelper = newDatabaseHelper(SQLiteActivity.this,1);
//这里因为要插入数据,所以要使用getWritableDatabase方法,这样才可以改写
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.insert("user",values);
}

首先来说 SQLiteDatabas这个类里面的insert方法接受的参数类型就是ContentValues类型的,所以要想往表格里面插入值的话,必须先将要插入的值封装到ContentValues里面,然后再通过insert方法将值放进具体的表格中。键值对里面的键都是列名,比如说一个表格中有id和name,那么就有两列,指定列名再传值。

更新:

class UpdateListener implements OnClickListener{
ContentValues values=new ContentValues();
values.put("name","joshua.yin");
DatabaseHelper dbHelper= newDatabaseHelper(SQLiteActivity.this,1);
SQLiteDatabase db = dbHelper.getWritableDatabase();
//第一个参数,要更新的表名
//第二个参数,一个ContentValues的对象
//第三个参数,相当于设置要更新哪一个,这个地方用了占位符,如果赋值为null的话,那么所有的列都要被
//更新
//第四个参数,字符串类型的数组,前面有几个占位符,这个数组中就有几个值,这里相当于把数组里面的第
//一个参数赋给第一个占位符(这里本身也只有一个)
db.update("user",values,"id=?",new String[]{"1"});
}

删除和查询还没有搞清楚,需要找个例子进一步研究一下。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读