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示例程序下 ...
随机推荐
- Java入门1
一.eclipse的简单使用 1.新建项目 在package explorer的空白处点击右键,新建一个项目(new->Java Project)或者点击菜单栏的File->JavaPro ...
- countUp.js-让数字动起来
先上一段示例代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- selenium chrome浏览器与chrome.driver的对应关系
看到网上基本没有最新的chromedriver与chrome的对应关系表,便兴起整理了一份如下,希望对大家有用: chromedriver版本 支持的Chrome版本 v2.34 v61-63 v2. ...
- 出错信息:Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column 'username'
出错信息: java.sql.SQLException: Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column 'username ...
- Prison 监狱
[题目描述]Caima 王国中有一个奇怪的监狱,这个监狱一共有 P 个牢房,这些牢房一字排开,第 i 个仅挨着第 i+1 个(最后一个除外).现在正好牢房是满的.上级下发了一个释放名单,要求每天释放名 ...
- Fliptile 翻格子游戏
问题 B: [Usaco2007 Open]Fliptile 翻格子游戏 时间限制: 5 Sec 内存限制: 128 MB 题目描述 Farmer John knows that an intell ...
- [Codeforces]856D - Masha and Cactus
题目大意:给出一棵树和若干条可以加入的边,要求加入若干条边使图是仙人掌并且加入的边权和最大,仙人掌定义为没有一个点属于超过1个环.(n,m<=200,000) 做法:这题的仙人掌跟平时见到的不太 ...
- LOJ #6031 字符串
Description Solution 当 \(k\) 值较小时,发现询问串比较多,串长比较小 然后对 \(Q\) 个询问区间离线跑莫队,一次考虑每一个区间的贡献 假设一个区间 \([i,j]\) ...
- 【luoguP4006 清华集训2017】小Y和二叉树
题目描述 小 Y 是一个心灵手巧的 OIer,她有许多二叉树模型. 小 Y 的二叉树模型中,每个结点都具有一个编号,小 Y 把她最喜欢的一个二叉树模型挂在了墙上,树根在最上面,左右子树分别在树根的左下 ...
- hdu 5492 (暴力+nice)
题意:在矩阵中,找一条路从 (1,1)->(n,m),使方差最小 思路: T = (N+M−1)∑N+M−1i=1(Ai−Aavg)2 将N + M - 1乘进去,即求1 ~ N+M-1,(N ...