Sqlite数据库初步的了解
转载与:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/0714/1438.html 来自:泡在网上的日子。
和其他数据库一样,SQLite数据库的一般操作包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中删除数据、修改表中的数据、关闭数据库、删除指定表、删除数据库和查询表中的某条数据。下面我们分别来学习这些基本操作。
1.创建和打开数据库
在Android 中创建和打开一个数据库都可以使用openOrCreateDatabase 方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,不过不存在则创建一个数据库;创建成功则返回一个 SQLiteDatabase对象,否则抛出异常FileNotFoundException。下面我们来创建一个名为"Examples_06_05.db"的数据库,并返回一个SQLiteDatabase对象 mSQLiteDatabase。
|
1
|
mSQLiteDatabase = this.openOrCreateDatabase("Example_06_05.db", MODE_PRIVATE, null); |
3.向表中添加一条数据
可以使用insert 方法来添加数据,但是 insert 方法要求把数据都打包到 ContentValues 中, ContentValues 其实就是一个Map, key值是字段名称, Value值是字段的值。通过 ContentValues 的 put 方法就可以把数据放到ContentValues中,然后插入到表中去。具体实现如下:
|
1
2
3
4
5
6
7
8
|
ContentValues cv = new ContentValues();cv.put(TABLE_NUM, 1);cv.put(TABLE_DATA, "测试数据");mSQLiteDatabase.insert(TABLE_NAME, null, cv); //这样同样可以使用execSQL方法来执行一条“插入”的SQL语句,代码如下:String INSERT_DATA = "INSERT INTO table1 (_id, num, data) values (1, 1, '通过SQL语句插入')" ;mSQLiteDatabase.execSQL(INSERT_DATA); |
4.从表中删除数据
要删除数据可以使用delete 方法,下面我们删除字段 "_id" 等于1的数据,具体代码如下:
|
1
2
3
4
|
mSQLiteDatabase.delete("Examples_06_05.db", " where_id="+0, null);通过 execSQL方法执行SQL语句删除数据如下:String DELETE_DATA = "DELETE FROM table1 WHERE _id=1";mSQLiteDatabase.execSQL(DELETE_DATA); |
5.修改表中的数据
如果添加了数据后发现数据有误,这时需要修改这个数据,可以使用updata方法来更新一条数据。下面我们来修改 "num" 值为0的数据,具体代码如下:
|
1
2
3
4
|
ContentValues cv = new ContentValues();cv.put(TABLE_NUM, 3);cv.put(TABLE_DATA, "修改后的数据");mSQLiteDatabase.update("table1" cv, "num " + "=" + Integer.toString(0), null); |
6.关闭数据库
关闭数据库很重要,也是大家经常容易忘记的。关闭的方法很简单,直接使用SQLiteDatabase 的 close 方法。具体代码如下:
|
1
|
mSQLiteDatabase.close(); |
7.删除指定表
这里我们使用execSQL方法来实现,具体代码如下:
|
1
|
mSQLiteDatabase.execSQL("DROP TABLE table1"); |
8.删除数据库
要删除一个数据库,直接使用deleteDatabase 方法即可,具体代码如下:
|
1
|
this.deleteDatabase("Examples_06_05.db"); |
9.查询表中的某条数据
在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体方法如下:
| 方法 | 说明 |
| move | 以当前的位置为参考,将Cursor移动到指定的位置,成功返回true, 失败返回false |
| moveToPosition | 将Cursor移动到指定的位置,成功返回true,失败返回false |
| moveToNext | 将Cursor向前移动一个位置,成功返回true,失败返回false |
| moveToLast | 将Cursor向后移动一个位置,成功返回true,失败返回 false。 |
| movetoFirst | 将Cursor移动到第一行,成功返回true,失败返回false |
| isBeforeFirst | 返回Cursor是否指向第一项数据之前 |
| isAfterLast | 返回Cursor是否指向最后一项数据之后 |
| isClosed | 返回Cursor是否关闭 |
| isFirst | 返回Cursor是否指向第一项数据 |
| isLast | 返回Cursor是否指向最后一项数据 |
| isNull | 返回指定位置的值是否为null |
| getCount | 返回总的数据项数 |
| getInt | 返回当前行中指定的索引数据 |
下面我们就是用Cursor来查询数据库中的数据,具体代码如下:
|
1
2
3
4
5
6
7
8
9
|
Cursor cur = mSQLiteDatabase.rawQuery("SELECT * FROM table", null);if( cur != null ){ if( cur.moveToFirst() ){ do{ int numColumn = cur.getColumnIndex("num"); int num = cur.getInt(numColumn); }while( cur.moveToNext()); } } |
Sqlite数据库初步的了解的更多相关文章
- SQLite数据库初步
Windows 10家庭中文版 想使用Python操作SQLite数据库,可是,不知道怎么建立数据库文件. 在SQLite官网溜达了一圈,总算使用上面的工具安装了建立了我需要的数据库文件. 1.进入官 ...
- sqlite数据库下载安装和初步操作和所遇到的问题near "sqlite3":syntax error
1.下载sqlite数据库:http://www.sqlite.org/download.html 假设是在window上安装须要在 Windows 区下载预编译的二进制文件.如图下载下载 sqlit ...
- Qt5 开发 iOS 应用之访问 SQLite 数据库
开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1 源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...
- Android之SQLite数据库篇
一.SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大. 二.SQLite的特点 1.轻量级使用 SQLit ...
- 【Win 10 应用开发】Sqlite 数据库的简单用法
如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...
- Android之SQLite数据库使用
转载整理于:http://my.csdn.net/lmj623565791 我刚开始接触Android的时候甚至都不敢相信,Android系统竟然是内置了数据库的!好吧,是我太孤陋寡闻了.由于我之前是 ...
- 让PDF.NET支持最新的SQLite数据库
最近项目中用到了SQLite,之前项目中用的是PDF.NET+MySQL的组合,已经写了不少代码,如果能把写好的代码直接用在SQLite上就好了,PDF.NET支持大部分主流的数据库,这个当然可以,只 ...
- iOS sqlite数据库图像化查看
问题描述:在xocde上用sqlite数据库的时候,因为没有图形化界面,有些时候很难看出自己设计的数据库是否有问题,比如我刚上手sqlite数据库设计id为自增长时,很自然的用了identify(1, ...
- Android中SQLite数据库小计
2016-03-16 Android数据库支持 本文节选并翻译<Enterprise Android - Programing Android Database Applications for ...
随机推荐
- SpringCloud 学习(一) :Features
话不多说,现在在开发微服务项目,也想系统的学习一下SpringCloud,顾选择硬着头皮跟着英文官方文档学习一遍SpringCloud. 现在公司在用SpringCloud,也有很好的实践应用,加上更 ...
- oracle中的条件语句
oracle中case when then及decode用法 一.case … when … then 语法: – 写法一: case(条件) when 值1 then 返回值1 when 值 ...
- 用NI的数据采集卡实现简单电子测试之5——压控振荡器的测试
本文从本人的163博客搬迁至此. 为了展示连续信号采集的方法,以其外部触发采集功能.我用运算放大器实现了一个最简单的低频压控振荡器(VCO),作为USB-6009采集的信号源.在LabVIEW下编写的 ...
- 大数据入门第五天——离线计算之hadoop(下)hadoop-shell与HDFS的JavaAPI入门
一.Hadoop Shell命令 既然有官方文档,那当然先找到官方文档的参考:http://hadoop.apache.org/docs/current/hadoop-project-dist/had ...
- Android内核编译
说明: 我这里用的是Android 4.2.2自带的交叉编译工具.如果是使用host系统安装的,我觉得应该也是可以的.但是没有测试过.因为Android源代码已经自带了,所以大多数情况下,不需要再安装 ...
- JavaWeb总结(十二)
JSP指令 提供整个JSP页面的相关信息 用于JSP页面与容器之间的通信 <%@ directive attribute1="value1" attribute2=" ...
- JavaWeb总结(七)
Web状态管理 - HTTP协议使用的是无状态的连接 - 对容器而言,每一个请求都来自于一个新的客户 解决方案-表单隐藏字段 <input type=”hidden” name=”session ...
- c++ 动态数组,指针与动态内存分配
教学内容: 内存的使用 动态内存分配malloc函数 分配内存时使用sizeof运算符 用指针访问内存 以数组的形式访问内存 一.内存的使用 堆(heap) 在程序执行期间分配内存时,内存区域中的这个 ...
- P3707 [SDOI2017]相关分析
P3707 [SDOI2017]相关分析 线段树裸题?但是真的很麻烦QAQ 题目给的式子是什么不用管,大力拆开,就是\(\frac{\sum x_iy_i-\overline xy_i-\overli ...
- docker创建image方法以及常用指令介绍
docker -help # 显示帮助 docker COMMAND -help # 帮助信息更详细 docker start “容器名称” # 启动一个或多个容器 docker s ...