Android存储之SQLite数据库
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数据库的更多相关文章
- android之存储篇——SQLite数据库
转载:android之存储篇_SQLite数据库_让你彻底学会SQLite的使用 SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型是什么. 例如:可以在In ...
- Android数据存储之SQLite数据库
Android数据存储 之SQLite数据库简介 SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎. ...
- Android版本升级同时Sqlite数据库的升级及之前数据的保留
http://www.cnblogs.com/wang340/archive/2013/05/06/3063135.html http://www.eoeandroid.com/forum.php?m ...
- Android 开发中 SQLite 数据库的使用
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...
- Android基础总结+SQlite数据库【申明:来源于网络】
Android基础总结+SQlite数据库[申明:来源于网络] 基础总结篇之一:Activity生命周期:http://blog.csdn.net/liuhe688/article/details/6 ...
- 将 flask 中的 session 存储到 SQLite 数据库中
将 flask 中的 session 存储到 SQLite 数据库中 使用 flask 构建服务器后端时,常需要在浏览器端存储 cookie 用于识别不同用户,根据不同的 cookie 判断出当前请求 ...
- Android 数据存储之 SQLite数据库存储
----------------------------------------SQLite数据库---------------------------------------------- SQLi ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- 【Android 应用开发】Android 数据存储 之 SQLite数据库详解
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19028665 . SQLiteDataBase示例程序下 ...
随机推荐
- innerHTML与innerText的区别
innerHTML获取元素的HTML内容,和设计元素的HTML内容(HTML标签会被解析)例如:ele.innerHTML="<strong>我会被解释加粗</strong ...
- SQL 语句 (二) --- SELECT
1 完整句法: SELECT [ ALL | DISTINCT TOP n [] WITH TIES select_list [INTO [new_table_name] ] [FROM {table ...
- 从零开始系列之vue全家桶(2)安装调试插件vue Devtools
小白安装前提是会用git,会从github上找东西. 第一步: 我们可以先从github上找到vue-devtools的项目,下载到本地.下载vue-devtools链接. 克隆方法:git clon ...
- [LeetCode] K-diff Pairs in an Array 数组中差为K的数对
Given an array of integers and an integer k, you need to find the number of unique k-diff pairs in t ...
- [JSOI 2011]分特产
Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同学,一共有多少种不同的分法?当然,JYY 不希望 ...
- [HAOI2007]分割矩阵
题目描述 将一个a*b的数字矩阵进行如下分割:将原矩阵沿某一条直线分割成两个矩阵,再将生成的两个矩阵继续如此分割(当然也可以只分割其中的一个),这样分割了(n-1)次后,原矩阵被分割成了n个矩阵.(每 ...
- [Noi2016]区间
题目描述 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x,使得对于每一 ...
- slab机制
1.内部碎片和外部碎片 外部碎片 什么是外部碎片呢?我们通过一个图来解释: 假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框.这个时候,在这段内存上不能找到连续的5 ...
- bzoj 4180: 字符串计数
Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...
- [ZJOI2006]物流运输 SPFA+DP
题目描述 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪. ...