SQLite使用方法

SQLite使用方法,第1张

概述1.SQLite介绍 官方网站 http://www.sqlite.org 它是一个非常小的关系型数据库,小到占用的资源几乎可以忽略不计,但是它提供的功能又比较齐全 2.SQLiteOpenHelper使用方法 相当于说这个ÓpenHelper是Android自己定义的一种创建数据库的方法,它是一个抽象类,所以必须通过自己创建类来继承它。继承了以后本身就具备了比如说getReadableDatab 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"});
}

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

以上是内存溢出为你收集整理的SQLite使用方法全部内容,希望文章能够帮你解决SQLite使用方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1182164.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存