Android存储之SQLite数据库数据库

创建数据库

package ……;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; /**
* Created by kongqw on 2015/11/22.
*/
public class SearchRecordOpenHelper extends SQLiteOpenHelper { // 创建数据库的SQL语句
private static final String CREATE_SEARCH_RECORD_TABLE = "CREATE TABLE SEARCH_RECORD_TABLE(ID INTEGER PRIMARY KEY AUTOINCREMENT,TEXT VARCHAR(50) NOT NULL)"; public SearchRecordOpenHelper(Context context) {
super(context, "search_record.db", null, 1);
} @Override
public void onCreate(SQLiteDatabase db) {
// 执行SQL语句创建数据库
db.execSQL(CREATE_SEARCH_RECORD_TABLE);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}

操作数据库

package ……;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log; import java.util.ArrayList; /**
* Created by kongqw on 2015/11/22.
* 查询记录的增删
*/
public class SearchRecordDao { private static final String TAG = "SearchRecordDao";
private SearchRecordOpenHelper mSearchRecordOpenHelper;
private SQLiteDatabase mSQLiteDatabase; // 构造方法
public SearchRecordDao(Context context) {
// 数据库创建保存搜索记录的表
mSearchRecordOpenHelper = new SearchRecordOpenHelper(context);
} /**
* 添加一条查询记录
*
* @param text 插入的数据
*/
public boolean addSearchRecord(String text) {
try {
mSQLiteDatabase = mSearchRecordOpenHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("TEXT", text);
long r = mSQLiteDatabase.insert("SEARCH_RECORD_TABLE", null, values);
if (-1 == r) {
// 插入失败
Log.e(TAG, "查询数据插入失败");
return false;
} else {
// 插入成功
Log.e(TAG, "查询数据插入成功");
return true;
}
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "查询插入数据出现异常");
return false;
} finally {
mSQLiteDatabase.close();
}
} /**
* 删除一条记录
*
* @param text 要删除的数据
*/
public boolean deleteSearchRecord(String text) {
try {
mSQLiteDatabase = mSearchRecordOpenHelper.getWritableDatabase();
mSQLiteDatabase.delete("SEARCH_RECORD_TABLE", "TEXT = ?", new String[]{text});
Log.e(TAG, "查询数据删除成功");
return true;
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, "查询删除数据出现异常");
return false;
} finally {
mSQLiteDatabase.close();
}
} /**
* 查询查询记录
*
* @return
*/
public ArrayList<String> selectSearchRecord() {
Cursor cursor = null;
ArrayList<String> searchRecord = new ArrayList<String>();
try {
mSQLiteDatabase = mSearchRecordOpenHelper.getReadableDatabase();
// 查询部分数据
// String sql = "select text from SEARCH_RECORD_TABLE limit ? offset ?";
// cursor = mSQLiteDatabase.rawQuery(sql, new String[]{selectCount + "", startIndex + ""});
// 查询全部数据
cursor = mSQLiteDatabase.query("SEARCH_RECORD_TABLE", new String[]{"text"}, null, null, null, null, "id desc");
while (cursor.moveToNext()) {
String text = cursor.getString(0);
searchRecord.add(text);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭游标
cursor.close();
// 关闭数据库
mSQLiteDatabase.close(); return searchRecord;
}
} /**
* 查询指定行数的数据
*
* @return
*/
public ArrayList<String> querySearchRecord() {
return innerSelectSearchRecordWithLimit(20 + "");
} /**
* 查询指定条数的查询记录
*
* @return
*/
private ArrayList<String> innerSelectSearchRecordWithLimit(String limit) {
Cursor cursor = null;
ArrayList<String> searchRecord = new ArrayList<String>();
try {
mSQLiteDatabase = mSearchRecordOpenHelper.getReadableDatabase();
// 查询部分数据
// String sql = "select text from SEARCH_RECORD_TABLE limit ? offset ?";
// cursor = mSQLiteDatabase.rawQuery(sql, new String[]{selectCount + "", startIndex + ""});
// 查询全部数据
cursor = mSQLiteDatabase.query("SEARCH_RECORD_TABLE", new String[]{"text"}, null, null, null, null, "id desc", limit);
while (cursor.moveToNext()) {
String text = cursor.getString(0);
searchRecord.add(text);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭游标
cursor.close();
// 关闭数据库
mSQLiteDatabase.close(); return searchRecord;
}
} /**
* 删除所有历史记录
*
* @return 删除是否成功
*/
public boolean deleteAllSearchRecord() {
try {
mSQLiteDatabase = mSearchRecordOpenHelper.getWritableDatabase();
mSQLiteDatabase.delete("SEARCH_RECORD_TABLE", null, null);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
mSQLiteDatabase.close();
}
}
}

查看数据库

Android存储之SQLite数据库的更多相关文章

  1. android之存储篇——SQLite数据库

    转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...

  2. Android数据存储之SQLite数据库

    Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...

  3. Android版本升级同时Sqlite数据库的升级及之前数据的保留

    http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...

  4. Android 开发中 SQLite 数据库的使用

    SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...

  5. Android基础总结+SQlite数据库【申明:来源于网络】

    Android基础总结+SQlite数据库[申明:来源于网络] 基础总结篇之一:Activity生命周期:http://blog.csdn.net/liuhe688/article/details/6 ...

  6. 将 flask 中的 session 存储到 SQLite 数据库中

    将 flask 中的 session 存储到 SQLite 数据库中 使用 flask 构建服务器后端时,常需要在浏览器端存储 cookie 用于识别不同用户,根据不同的 cookie 判断出当前请求 ...

  7. Android 数据存储之 SQLite数据库存储

    ----------------------------------------SQLite数据库---------------------------------------------- SQLi ...

  8. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  9. 【Android 应用开发】Android 数据存储 之 SQLite数据库详解

    . 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...

随机推荐

  1. MySQL 5.7 基于复制线程SQL_Thread加快恢复的尝试

    1. MySQL 数据恢复常用办法 MySQL恢复的方法一般有三种: 1. 官方推荐的基于全备+binlog , 通常做法是先恢复最近一次的全备,然后通过mysqlbiinlog --start-po ...

  2. C++程序设计语言(特别版) -- 一个桌面计算器

    前言 这里要介绍各种语句和表达式,将通过一个桌面计算器的程序做些事情,该计算器提供四种座位浮点数的中缀运算符的标准算术运算. 这个计算器由四个部分组成:一个分析器,一个输入函数,一个符号表和一个驱动程 ...

  3. 还原Vue.js的data内的数组和对象

    最近学习Vue.js发现其为了实现对data内的数组和对象进行双向绑定,将数组和对象进行了封装. 如下的对象 todos: [     {         id: 1,         title: ...

  4. 小工具:批量导入导出主机上的docker镜像

    工作需要,将主机上的部分镜像导出为tar文件,放便在其他主机上使用 用python实现了一个批量打包脚本: import re import os import subprocess if __nam ...

  5. kafka知识体系

    最近一直在整理kafka相关资料,以构建自己的知识体系. 主要分为五大方面: Kafka设计与原理分析 Kafka配置分析 Kafka运维手册 Kafka编程开发 kafka源码分析

  6. mysql事务,视图,权限管理,索引,存储引擎(胖胖老师)

    1: 视图什么是视图    视图是一个虚拟表, 它的内容来源于查询的实表, 本身没有真正的数据;视图的作用    对于复杂的查询时,每次查询时都需要编写一些重复的查询代码让编写sql的效率低下, 为了 ...

  7. 浅谈CSRF漏洞

    前言: 看完小迪老师的CSRF漏洞讲解.感觉不行 就自己百度学习.这是总结出来的.   歌曲:   正文: CSRF与xss和像,但是两个是完全不一样的东西. xss攻击(跨站脚本攻击)储存型的XSS ...

  8. [USACO13OPEN]重力异常

    题目描述 船长正在拯救她的船员,Beefalo 博士. 和所有伟大的冒险故事一样,这个故事也是发生在一个2D平面上的.囧 这个平面是M*N的格子组成的网格,代表着船长的世界的一个侧视图. 有些格子是空 ...

  9. bzoj 5251: [2018多省省队联测]劈配

    Description 一年一度的综艺节目<中国新代码>又开始了. Zayid从小就梦想成为一名程序员,他觉得这是一个展示自己的舞台,于是他毫不犹豫地报名了. 题目描述 轻车熟路的Zayi ...

  10. 【BZOJ2243】【SDOI2011】染色

    题意见试题传送门 解题思路:显然是题树剖题. 考虑用线段树维护区间端点颜色与颜色数,这样就可以方便的合并,注意查询的时候对端点的特殊处理即可. 时间效率最高为\( O (m \log^{2} n) \ ...