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"}); } 删除和查询还没有搞清楚,需要找个例子进一步研究一下。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |