SQLite的基本使用介绍【教程5--图解】

SQLite的基本使用介绍【教程5--图解】,第1张

概述作者:盖伟麟 SQLite说明:轻量型的基于文本的关系型数据库,提供了比较完整的数据库功能,用于比较多的嵌入式设备,主要是因为数据库比较小,但功能比较完善。   l  SQLiteOpenHelper类的使用: getReadableDatabase():得到一个可读(查)的数据库,返回SQLiteDatabase; getWritableDatabase():得到一个可写(增、删、改)的数据库,

作者:盖伟麟


sqlite说明:轻量型的基于文本的关系型数据库,提供了比较完整的数据库功能,用于比较多的嵌入式设备,主要是因为数据库比较小,但功能比较完善。

l sqliteOpenHelper类的使用:

getReadableDatabase():得到一个可读(查)的数据库,返回sqliteDatabase;

getWritableDatabase():得到一个可写(增、删、改)的数据库,返回同上;

onCreate(sqliteDatabase db):创建数据库;

onopen(sqliteDatabase db): 打开数据库;

onUpdata(sqliteDatabase db,int oldVersion,int newVersion):更新数据库

close():关闭数据库


l 具体实例:

首先看程序运行后截图,从截图中看以看出我们在main.xml中设置了五个button控件



实例程序共有两个类DatabaseHelper.java 与 sqliteActivity.java。

DatabaseHelper.java

DatabaseHelper类要继承sqliteDatabaseHelper类,代码中有注释可以帮助理解程序:


@H_301_113@public class DatabaseHelper extends sqliteOpenHelper { private static final int VERSION = 1; //在sqliteOepnHelper的子类当中,继承了父类,必须重写该构造函数,这是java基础知识 public DatabaseHelper(Context context,String name,CursorFactory factory,int version) { //必须通过super调用父类当中的构造函数 super(context,name,factory,version); // Todo auto-generated constructor stub }//调用三个参数的构造函数 public DatabaseHelper(Context context,String name){ this(context,VERSION); }//调用四个参数的构造函数 public DatabaseHelper(Context context,int version){ this(context,null,version); }//该函数是在第一次创建数据库的时候执行,实际上是在第一次得到sqliteDatabse对象的时候,才会调用这个方法 @OverrIDe public voID onCreate(sqliteDatabase db) { // Todo auto-generated method stub System.out.println("create a Database"); //execsql函数用于执行SQL语句 db.execsql("create table user(ID int,name varchar(20))"); } @OverrIDe public voID onUpgrade(sqliteDatabase db,int newVersion) { // Todo auto-generated method stub System.out.println("update a Database"); }}

注意:数据库版本要是正数且递增;

DatabaseHelper作为一个访问sqlite的助手类,提供两个方面的功能,

第一,getReadableDatabase(),getWritableDatabase()可以获得sqliteDatabse对象,通过该对象可以对数据库进行 *** 作

提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的 *** 作,例如创建,修改数据库的表结构

sqliteActivity.java

使用此Activity通过上面的类对关系型数据库sqlite进行访问,主要是五个按钮的监听器设置及跟按钮绑定。

首先介绍adb命令的使用,注意前提是环境配置正确。

大家知道AndroID是基于linux,所以输入adb shell进入liNUX命令行:



我们的数据库数据存在哪里呢?




可以看到ls –l后,有一个data目录。

进入data目录,ls –l后,可以看到还有一个data目录,进入。

进入后发现有很多目录其对应着每个应用程序,标记处是我们的模拟器上运 行的应用程序。




进入我们的程序包,会发现其中只有一个lib目录如下。




下面我们开始运行程序:


点击第一个按钮




打印出create a Database,这里调用了public voIDonCreate(sqliteDatabase db)。

其中主要调用了下面的监听器,新建dbHelper对象时候,传递了两个参数分别是这个Activity和所创建数据库的名字。


@H_301_113@class CreateListener implements OnClickListener{ public voID onClick(VIEw v) { //创建一个DatabaseHelper对象 DatabaseHelper dbHelper = new DatabaseHelper(sqliteActivity.this,"test_mars_db");//只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库 sqliteDatabase db = dbHelper.getReadableDatabase(); }}

进入应用程序的目录,可以看到我们建立的数据库。




如何进入数据库对该数据库进行 *** 作呢?用命令sqlite3 数据库名,如下图所示命令行提示符也发生变化。




我们进行一个最常规的 *** 作.schema显示当前数据库有哪些表以及创建这些表的建表语句。




注意sqlite中的命令全是以“.”开头。下面查询此表,会发现现在表中还没有数据。




下面点击按钮打开LogCat如下图




打印出update a Database,因为数据库变更了所以调用了public voID onUpgrade(sqliteDatabase db,int newVersion)函数。

其中主要调用了下面的监听器,调用了三个参数的构造函数,改了数据库的版本号。

@H_301_113@classUpdateListener implements OnClickListener{ public voID onClick(VIEwv) {DatabaseHelper dbHelper = newDatabaseHelper(sqliteActivity.this,"test_mars_db",2); sqliteDatabase db =dbHelper.getReadableDatabase(); } }

下面看按键

绑定的监听器的设置看下面代码,下面的ContentValues对象会在数据库的修改 *** 作中经常用到。


@H_301_113@class InsertListener implements OnClickListener{ public voID onClick(VIEw v) { //生成ContentValues对象 ContentValues values = new ContentValues(); //想该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致 values.put("ID",1); values.put("name","zhangsan"); DatabaseHelper dbHelper = new DatabaseHelper(sqliteActivity.this,2); sqliteDatabase db = dbHelper.getWritableDatabase(); //调用insert方法,就可以将数据插入到数据库当中 db.insert("user",values);//三个参数,第一个表名,第一个对于相对的属性如果没有则为null,第三个为ContentValue对象 }}

我们点击上面按钮,重新查询表中的数据,发现新增加了一行数据。




下面点击按钮

按钮绑定的监听器设置看下面代码。


@H_301_113@ class UpdateRecordListener implements OnClickListener{ public voID onClick(VIEw arg0) { // Todo auto-generated method stub //得到一个可写的sqliteDatabase对象 DatabaseHelper dbHelper = new DatabaseHelper(sqliteActivity.this,"test_mars_db"); sqliteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name","zhangsanfeng"); //第一个参数是要更新的表名 //第二个参数是一个ContentValeus对象 //第三个参数是where子句 db.update("user",values,"ID=?",new String[]{"1"}); } }

注意:更新 *** 作就相当于执行SQL语句当中的update语句

UPDATE table_name SET XXCol=XXXWHERE XXCol=XX...

其中的‘’?“是一个占位符,对应于后面一个字符。

点击上面的update按钮后重新查询数据库发现name字段已经改变。




下面看按键 其绑定的监听器设置如下,可以看出query()函数参数很多,其实就是参照sql的查询语句来的。


@H_301_113@ queryListener implements OnClickListener { public voID onClick(VIEw v) { System.out.println("aaa------------------"); Log.d("myDeBUG","myFirstDeBUGMsg"); DatabaseHelper dbHelper = new DatabaseHelper(sqliteActivity.this,"test_mars_db"); sqliteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("user",new String[] { "ID","name" },new String[] { "1" },null); while (cursor.movetoNext()) { //下面要先得到列的序号,通过序号列的相应属性 String name = cursor.getString(cursor.getColumnIndex("name")); System.out.println("query--->" + name); } }}


LogCat输出如下截图。




本文针对一个实例介绍使用sqlite的基本使用方法。

不过还是不要过于依赖于sqlite的数据库,因为还是不太稳定,出现很多莫名其妙的问题难于解决,不要存放太多数据或过度依赖于它。

总结

以上是内存溢出为你收集整理的SQLite的基本使用介绍教程5--图解】全部内容,希望文章能够帮你解决SQLite的基本使用介绍【教程5--图解】所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存