SQLite使用方法

SQLite使用方法,第1张

概述一、SQLite介绍 SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资 源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的 *** 作系统,同时能够跟很多程序语 言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql

一、sqlite介绍

sqlite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资 源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持windows/linux/Unix等等主流的 *** 作系统,同时能够跟很多程序语 言相结合,比如 TclC#PHPJava等,还有ODBC接口,同样比起MysqLPostgresql这两款开源世界著名的数据库管理系统来讲,它的处理速度 比他们都快。

二、sqliteOpenHelper使用方法

JAVA中使用JDBC来访问数据库,而AndroID则设计使用一套自己的API来访问数据库,必须要是用到sqliteOpenHelper方法来访 问数据库,不使用也可以,但会很麻烦。sqliteOpenHelper是一个管理数据库的创建、版本等 *** 作的帮助类。可以创建一个子类去实现一些方法。sqliteOpenHelper是一个抽象类,用户需要继承这个类,并实现该类中的一些方法。

使用sqliteOpenHelper来访问数据库必须要使用一些方法:

方法名

描述

getReadableDatabase()

创建或者打开一个可读的数据库,会返回一个sqliteDatabase对象,基于这个对象可以进行增删改查 *** 作。

getWritableDatabase()

创建或者打开一个(可读)可写的数据库,同样也会返回一个sqliteDatabase对象,基于这个对象可以进行增删改查 *** 作。

onCreate(sqliteDatabase db)

回调函数,当数据库第一次被创建的时候就会调用。

onopen(sqliteDatabase db)

回调函数,当数据库被打开的时候就会被调用。

onUpgrade(sqliteDatabase db,int oldVersion,int newVersion)

回调函数,当数据库被更新的时候就会被调用。

close()

关闭数据库。

三、 使用adb访问sqlite

adb的全称为AndroID DeBUG BrIDge,就是起到调试桥的作用。通过adb我们可以在Eclipse中方面通过DDMS来调试AndroID程序,说白了就是deBUG工具。 adb的工作方式比较特殊,采用监听Socket TCP 5554等端口的方式让IDEQemu通讯,默认情况下adbdaemon相关的网络端口,所以当我们运行Eclipseadb进程就会自动运行。

adbandroID sdk里的一个工具, 用这个工具可以直接 *** 作管理androID模拟器或者真实的andriod设备(G1手机). 它的主要功能有:  

1) 运行设备的shell(命令行)  

2) 管理模拟器或设备的端口映射  

3) 计算机和设备之间上传/下载文件  

4) 将本地apk软件安装至模拟器或androID设备  

ADB是一个 客户端-服务器端 程序, 其中客户端是你用来 *** 作的电脑, 服务器端是androID设备.

打开命令行,输入adb,就会看到adb的相关命令。如果看到的是adb不是内部或外部命令这个提示,说明环境变量没有配置好,以前path只配置了 sdk目录下的tools,对于旧版本中adb.exe就在该目录下,可以正常启动。但是对于新版本sdkadb.exe被移动到了platform- tools目录下,这一点需要注意。

如果此时提示device not found:

则是因为模拟器没有启动,需要先启动模拟器,启动模拟器可以从Eclipse上的Opens AndroID SDK and AVD Manageer上选择需要启动的模拟器进行启动,也可以从命令行进行启动:

sqlite数据库放在./data/data/当前虚拟机运行的应用程序的包名/databases/目录里。当没有创建数据库的时候,是没有databases目录的,只有当数据库创建成功时才有。(我的程序包名均为com.androID.activity)

此时只有lib目录,没有databases目录。当运行创建程序之后,就会创建databases目录,且该目录下有数据库。

四、 sqlite增删改查

DatabaseHelper.java

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

//第一,getReadableDatabase()getWriteableDatabase()可以获得sqliteDatabase对象,通过这个对象对数据库进行 *** 作

//第二,提供了onCreateonUpdate两个回调函数,允许我们在创建和升级数据库时,进行自己的 *** 作

public class DatabaseHelper extends sqliteOpenHelper {

public static final int VERSION=3;

//sqliteOpenHelper的子类中,必须有下面的第一个构造函数

//第一个参数:一个Activity对象,第二个参数:数据库的名字,第三个参数:第四个参数:当前数据库的版本

public DatabaseHelper(Context context,String name,CursorFactory factory,

int version) {

//必须通过super调用父类当中的构造函数

super(context,name,factory,version);

// Todo auto-generated constructor stub

}

int version){

this(context,null,String name){

VERSION);

//onCreate函数是第一次创建数据库的时候执行,实际上是在第一次得到sqliteDatabase对象的时候,才会调用这个方法

//也就是在DatabaseHelper调用getReadableDabase或者getWriteableDatabase时,如果是第一次创建数据库才执行

@OverrIDe

public voID onCreate(sqliteDatabase db) {

// Todo auto-generated method stub

System.out.println("创建数据库");

db.execsql("create table user(ID int,name varchar(20))");//千万别写错了

//数据库版本更新的时候,调用这个函数

//比方说,创建数据库的版本是1,更新后的版本是2,就表示数据库更新了

public voID onUpgrade(sqliteDatabase db, int oldVersion, int newVersion) {

System.out.println("更改数据库");

}

MysqLiteActivity.java

public class MysqLiteActivity extends Activity {

private button createbutton = null;

private button updatabutton = null;

private button insertbutton = null;

private button unbutton = null;

private button selectbutton = null;

public voID onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentVIEw(R.layout.main);

createbutton = (button)this.findVIEwByID(R.ID.createbutton);

createbutton.setonClickListener(new CreateListener());

updatabutton =(button)this.findVIEwByID(R.ID.updatebutton);

class CreateListener implements OnClickListener{

@OverrIDe

public voID onClick(VIEw v) {

// Todo auto-generated method stub

//创建一个DatabaseHelper对象

DatabaseHelper dbHelper = newDatabaseHelper(MysqLiteActivity.this,"bjldb");

//只有调用了DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会创建,或打开一个数据库

sqliteDatabase db = dbHelper.getReadableDatabase();

}

class InsertListener implements OnClickListener{

//生成ContentValues对象,map对象差不多,存放的都是键值对

ContentValues values= new ContentValues();

//向该对象当中插入键值对,其中键是列名,值是希望插入到这一列的值

values.put("ID",1);

values.put("name", "张三丰");

sqliteDatabase db = dbHelper.getWritableDatabase();

//调用insert方法,就可以将数据插入到数据库当中,三个参数:表名、默认空值,ContentValues对象

db.insert("user",values);

class UpdateRecordListener implementsOnClickListener{

ContentValues values = new ContentValues();

"hello");

///第一个参数是要更新的表名

//第二个参数是一个ContentValeus对象

//第三个参数是where子句

//第四个参数,对占位符进行赋值,第一个元素赋值给第一个展位副

db.update("users",values,"ID=?",new String[]{"1"});

}

class SelectListener implements OnClickListener{

public voID onClick(VIEw v) {

DatabaseHelper dbHelper = newDatabaseHelper(MysqLiteActivity.this,230); padding-bottom:0cm; border-left:medium none; padding-top:0cm; border-bottom:medium none; text-align:left"> sqliteDatabase db = dbHelper.getWritableDatabase();

Cursor cursor = db.query("user",new String[]{"ID","name"},new String[]{"1"},null);

while(cursor.movetoNext()){

//getString必须用索引

String name= cursor.getString(cursor.getColumnIndex("name"));

System.out.println("姓名是"+name);

}

}

}

说明:

1) CreateListener这个监听器中是用来创建数据库的,创建数据库必须要先创建一个DatabaseHelper对象,同时调用的是 DatabaseHelper两个参数的构造方法,分别为当前Activity的对象,以及要创建的数据库的名字。并且只有调用了 DatabaseHelper对象的getReadableDatabase()方法,或者是getWritableDatabase()方法之后,才会 创建,或打开一个数据库。

2) UpdateListener是用来更新数据库的,不是更新数据的。由于默认数据库版本为1,此处设置为2,则androID会自动调用onUpgrade方法。

3) 插入数据必须使用ContentValues对象进行数据的存储、传递。contentValue对象和Map差不多,存放的都是键值对。想在该对象当中 插入键值对,其中键是列名,值是希望插入到这一列的值,值必须和数据库当中的数据类型一致。由于插入数据,相对于修改,所以版本号为2。最后调用 insert方法就可以将数据插入到数据库当中,三个参数:表名、如果ContentValues对象为空时的默认值,ContentValues对象。

4) 更新数据 *** 作需要使用ContentValues对象存储需要更新的列名以及更新后的值。最后调用DatabaseHelperupdate方法,参数 分别为表名、contentValues对象,where子句,此时相当于JDBCPrepareStatement的方法使用?作为占位符,在后面的 String数组中设置占位符的值。

5) 数据查询是调用query方法,该方法参数众多,一般的参数为:表名、存储要查询列的String型数组、where子句、占位符数组、groupby havingorderby。返回值为Cursor类型,循环调用cursormovetoNext方法即可。

6) 不要过于依赖sqlite,不太稳定。

总结

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

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存