关于SQLite的创建以及使用相关说明

没有给出具体的程序,但看完这后可能对你有所帮助。

数据库操作基本知识:

execSQL(String sql):

执行一个数据库语句

insert(table,nullColumbHack,contentValues initialValues):

在表(table)中插入一行初始值(initialValues),nullColumnHack需要传入一个列名。

1:对于SQLite数据库的创建以及使用的第一种方法:

****************************************************

第一步(单独创建一个java类):

****************************************************

在Android开发中,提供了一个类:SQLiteOpenHelper,先对此类进行说明(翻译自官方文档):

1==========================================================

概览----SQLiteOpenHelper

1:SQLiteOpenHelper是一个可以很方便创建和管理数据库的抽象类。

2:在具体创建以及管理数据库时我们可以新建一个继承该抽象类的子类。

在该子类中,我们需要实现三个方法【onOpen()可选】:

onCreate() onUpgrade() onOpen()

3:这个子类在打开数据库的同时也顾及到了以下几点:

(1)如果打开数据库时不存在指定打开的数据库,则创建数据库

(2)如果有必要,则更新数据库

4:事务被用于确保数据库总是处于敏感状态

5:为了避免应用程序启动时,由于启动伴随着长时间的数据库升级而阻塞,该类的使用可以使ContentProvider更容易实现推迟打开或者升级数据库,直到第一次使用该数据库。

==========================================================1

2==========================================================

*构造方法详解----SQLiteOpenHelper

*public SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version)

*创建一个帮助对象用于创建,打开或者管理一个数据库,这个方法执行总是非常迅速的。

*当且仅当getWritableDatabase()或者getReadableDatabase()中之一被调用时,数据库才会被真正的创建,也就是说,如果这两个方法未调用,数据库未创建。

*参数含义:

*Context:上下文环境---用于指定在哪里打开或者创建一个数据库

*name :名称-------数据库文件的名称,如果是内存中的数据库,可以填写为null

*factory:工厂-------用于创建一个指针对象,或者默认为null

*version:版本-------数据库版本号(开始为1)如果数据库是旧的,可以使用onUpgrade()来更新数据库,如果数据库是新的可以使用downgrade()降级

=========================================================2

显然SQLiteOpenHelper类是一个抽象类,必须要用一个类(我们在这儿以subClass为例)来继承它,然后才能进行相关操作。在subClass类中需要创建subClass类的构造方法,然后在构造方法中引用其父类的构造方法,这便由一个抽象类到了一个实例类的转换。

在subClass类中需要至少需要覆写两个方法:

onCreate() onUpgrade()

其中onCreate(SQLitebase db)中需要传入的参数是SQLitebase类型的,【关于SQLitebase类,这个类拥有的方法可以创建,删除,执行SQL命令或者执行其他管理数据库的任务】所以这里应该传入一个SQLitebase类型的对象。比如我们在这里传入sld,那么意味着我们将可以创建一个sld数据库,实现方法就是在onCreate()方法体中加入这么一句:

sld.execSQL(“create table IF NOT EXISTS”);

当然你可以用一个常量来定义,比如你可以新建一个Constans.java类,在里面定义一个常量:

public static final String DATABASE_CREATE="create table IF NOT EXISTS "

然后你就可以使用了,上面的语句可以转换为:

sld.execSQL(Constants.DATABASE_CREAT);

这样你就完成了创建一个数据库任务。当然到此还远远没有结束工作……

接下来还要覆写一个方法:

onUpgrade(SQLitebase db,int oldVersion,int newVersion)

这里的参数显而易见,第一个是传入你需要更新的数据库名字,第二个是当前版本,最后一个是最新的数据库版本。更新数据库时可以丢弃原数据库创建一个新的数据库,所以在该方法体中可以用execSQL方法执行一个SQL语句,丢弃原来的表,然后利用上面提到过的onCreate()方法重新建立一个数据库。

第一步到此暂且打住,第一步的目的是实现一个数据库的创建。我们已经大致完成,接下来进入第二步。

****************************************************

第二步(单独创建一个java类)

****************************************************

第二步的目的是:实现对数据库的常见操作。

首先在这个类中我们需要先建立该类的构造方法,构造方法体中需要创建一个SQLiteOpenHelper类的对象,我们需要在这个类中用该对象实现一些常见方法的构建,该对象由第一步中的类来新建,我们在这儿假设为:soh。

常见操作中最重要的大概是关闭打开数据库了。所以在这个类中我们首先实现打开与关闭的功能。在打开的方法构建中需要注意的时,每一次打开数据库之前必须要执行:

db = soh.getWritableDatabase();

以得到一个数据库,其中的db是一个SQLiteDatabase对象,你当然可以随便起个名字,这是封装在这个java类中的,起到传递参数的作用,并非你所要创建的数据库名字。

然后就是关闭数据库了,仍然是使用soh类来实现,方法体为:

soh.close();

实际上对于数据库的打开与关闭,均要用到继承了SQLiteOpenHelper类的子类subClass中的getWritableDatabase()与close()方法。

对于其他的方法我在这儿只简要的提一下:

主要有:insert() delete() query() update()

对应的定义:

insert()

public long insert (String table, String nullColumnHack, ContentValues values)

delete()

public int delete (String table, String whereClause, String[] whereArgs)

query():

public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)

update():

public int update (String table, ContentValues values, String whereClause, String[] whereArgs)

只要涉及到插入,删除,查询,更新的方法,上面四个必然会用到,它们均是SQLiteDatabase所包括的方法,所以可以使用SQLiteDatabase的对象来进行方法的执行。

****************************************************

第三步(单独创建一个java类)

****************************************************

在上面两个步骤中我们完成了对于SQLite数据库的创建以及实现了常用方法的创建。这一步我们新建的类就开始使用上两步中的成果。

引入各种布局文件,为各种按钮设置监听操作,在这里就不多提了。

2:对于SQLite数据库的创建以及使用的第二种方法:

这一种方法相对来说要容易一些。

我们在一个java类中实现对数据库的创建,打开,关闭以及其他的常用操作。

首先我们先要介绍一些基本知识:

========================================================

先来看一下SQLiteDatabase的openDatabase方法的定义:

public static openDatabase (String path, SQLiteDatabase.CursorFactory factory, int flags)

根据标志:OPEN_READWRITE(读写模式) OPEN_READONLY (只读模式)CREATE_IF_NECESSARY (如果需要的话,创建数据库)NO_LOCALIZED_COLLATORS(不根据本地化语言对数据进行排序)

打开数据库。

如果你希望做一些其他的事情的话,如设置数据库的位置到当前系统位置,你可以调用函数setLocale(Locale)。

参数释义:

Path:要创建或者打开的数据库文件的路径

Factory:当查询被调用的时候,这个可选的factory类可以被调用来实例化一个指针,当然你也可以默认其为null

Flags:控制数据库的读取模式

其他:

1:返回一个新的打开的数据库。:

2:如果数据库不能够读取,则抛出一个SQLiteException异常。

========================================================

所以我们可以使用此方法来创建或者打开一个数据库。除此之外我们还要知道android数据库的默认路径为:

data/data/your package /database name

其中“data/data/”是固定的,“your package”是指你的java类所在的包名,“database name”是指你的数据库名字,如果该数据库不存在将会依据你的指示进行创建与否。

比如方法体中你可以这么写(我们以创建sld数据库为例):

sld=SQLiteDatabase.openDatabase

(

"data/data/china.myth.sqlitestudy01/SQLite",

null,

SQLiteDatabase.OPEN_READWRITE|SQLiteDatabase.CREATE_IF_NECESSARY

);

setText("打开数据库");

String sql = "create table if not exists people (sname char(5),sphone varchar(20),sdress varchar(20));";

sld.execSQL(sql);

setText("创建数据库");

关闭数据库时,你可以在数据库中直接写为:

sld.close();

对于其他的方法,你完全可以将一个sql语句写为字符串,然后使用execSQL()方法进行执行即可实现插入,更新,查询,删除等等。

关于SQLite的创建以及使用相关说明的更多相关文章

  1. python在sqlite动态创建表源码

    代码之余,将开发过程中经常用的代码片段备份一下,如下的代码是关于python在sqlite动态创建表的代码,应该能对各位有所用. import sqlite3 as db conn = db.conn ...

  2. oracle 脚本创建数据库的相关文章,教程,源码

    学步园推荐专题: 关于oracle 脚本创建数据库的相关文章 文章标题 文章链接 文章简介 oracle命令行创建数据库的示例脚本 http://www.xuebuyuan.com/964527.ht ...

  3. 啊啊啊啊啊啊啊今天就写,炒鸡简单 数据库Sqlite的创建,库的增删改查

    啦啦啦啦啦啦啦 写这个不用多长时间,我直接写代码注释都是些语句,Sql语句和Api来操作数据库 ,语句的参数我会注释 SQLite数据库创建数据库需要使用的api:SQLiteOpenHelper必须 ...

  4. iOS学习之sqlite的创建数据库,表,插入查看数据

    目录(?)[-] 新建项目sqliteDemo添加使用sqlite的库libsqlite3dylib sqlite 的方法 获取沙盒目录并创建或打开数据库 创建数据表 插入数据 查询数据库并打印数据 ...

  5. SQLite 的创建与编辑

    创建数据库语句 -(void)creatData { sqlite3 *sqlite = nil; NSString *filePath = [NSHomeDirectory() stringByAp ...

  6. andorid SQLite数据库创建文件

    package com.hanqi.application3; import android.content.ContentValues; import android.database.sqlite ...

  7. 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据

    原文:  http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...

  8. 终端查询数据库sqlite(创建你自己,或者是coredata创建)那里的东西

    首先需要知道数据库的路径,coredata一般都是在沙箱中创建Documents目录的.虽然他建立了自己看, sqlite3 #数据库路径#        //进入数据库 .tables  //查看数 ...

  9. 在docker中快速创建包含ip相关tool的ubuntu镜像

    在docker学习中需要创建轻量级的,包含ip相关工具的容器,支持ping,ip,ethtool,brctrl等相关指令. 下面就是快速创建一个满足需求的ubunut镜像的过程: 1) 在docker ...

随机推荐

  1. Android 高级UI设计笔记19:PopupWindow使用详解

    1. PopupWindow使用 PopupWindow这个类用来实现一个弹出框,可以使用任意布局的View作为其内容,这个弹出框是悬浮在当前activity之上的. 2. PopupWindow使用 ...

  2. 【转】ViewGroup的onMeasure和onLayout分析

    ViewGroup的onMeasure和onLayout分析 一个Viewgroup基本的继承类格式如下: 1 import android.content.Context; 2 import and ...

  3. 虚拟机的MAC地址分配与修改

    虚拟世界的MAC地址 先看一下真实世界的MAC地址是如何分配,如何保证没有重复的.每块网卡都有一个MAC地址,MAC地址是一个6字节.也即48bit的数据.前3字节称为OUI ,是由IEEE组织注册给 ...

  4. yum中baserul路径中的空格

    配置yum源时,比如指定本地挂载的光盘时,路径中包含空格.在不使用链接的情况下,用"\"进行转义不行,把路径加单.双引号也不可行.正确做法是把空格用%20代替.同理,其他不可识别的 ...

  5. 如何导入hadoop源码到eclipse

    需要进一步学习hadoop.需要看看内部源码实现,因此需要将hadoop源码导入都eclipse中. 简单总结一下,具体步骤如下: 首先确保已经安装了git.maven3.protobuf2.5.如果 ...

  6. 剑指Offer34 数组中的逆序对

    /************************************************************************* > File Name: 34_Invers ...

  7. 【求无向图的桥,有重边】ZOJ - 2588 Burning Bridges

    模板题——求割点与桥 题意,要使一个无向图不连通,输出必定要删掉的边的数量及其编号.求桥的裸题,可拿来练手. 套模板的时候注意本题两节点之间可能有多条边,而模板是不判重边的,所以直接套模板的话,会将重 ...

  8. JQuery multiselect的相关使用

    这两天做项目需要用到多选控件,于是选择了JQuery  multiselect控件,介绍一下常用的一些相关属性. 详细地址:http://davidstutz.github.io/bootstrap- ...

  9. Mac 在命令行快速切换目录 mark

    转自: http://www.ccvita.com/520.html ,略修改. 每天在命令行下,一大部分的工作都是一遍又一遍的输入 cd ~/some/very/deep/often-used/di ...

  10. 运用DataTable进行行转列操作

    public DataTable GetReverseTable(DataTable p_Table) { DataTable _Table = new DataTable(); ; i != p_T ...