关于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. sharepreferce支持boolean,string类型

    public class SharePrefersUtils { private static final String name="cogi"; public static bo ...

  2. [ASP.NET] Http协议GET与POST

    引言 HTTP 协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来.但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状 ...

  3. Java线程同步的方式

     java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查),      将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的 ...

  4. 【转】使用断言NSAssert()调试程序错误

    NSAssert()只是一个宏,用于开发阶段调试程序中的Bug,通过为NSAssert()传递条件表达式来断定是否属于Bug,满足条件返回真值,程序继续运行,如果返回假值,则抛出异常,并切可以自定义异 ...

  5. Ralink RT3290无线网卡驱动安装 (linux)

    Ralink RT3290无线网卡驱动安装 (linux, 笔记备忘) 1. 设备信息查看无线网卡设备信息 # lspci : 2. 驱动下载http://pan.baidu.com/s/1sjsHN ...

  6. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '

    mysql中如果字段使用了关键字,在插入和更新时会提示 You have an error in your SQL syntax; check the manual that corresponds ...

  7. 转:eclipse技巧之快速生成Override函数

    转自: http://www.cnblogs.com/junqilian/archive/2013/03/15/2960277.html 小提示:Eclipse 中快速实现或Override基类或接口 ...

  8. 写入数据到Plist文件中时,第一次要创建一个空的数组,否则写入文件失败

    #pragma mark - 保存数据到本地Plist文件中 - (void)saveValidateCountWithDate:(NSString *)date count:(NSString *) ...

  9. fiddler 记录一些以前不熟悉的东西

    fidddler已经用了3年了,一般就是抓包,看基本的信息,然后就是本地文件替换网络文件. 然后有一些很有用的东西的却没有深入的学习过.  -_-!. 抓https的包 fiddler的过滤器的使用 ...

  10. web性能瓶颈

    1.网络,网络不好,其他做得再好,性能也是问题. 其中包括自己的带宽和请求的数量,带宽是我们无法控制的.我们能做的是尽可能的减少不必要的请求. 2.服务器,一个产品,服务器是关键,所有的请求都要经过服 ...