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. 参加Java培训到底靠不靠谱?

    导读 科技越发展,社会越进步,人们越便利,便衍生出更多的人从事程序员这个高大上的职业,可哈尔滨Java培训学校这么多,到底靠不靠谱,会不会处处是陷阱,爱尚实训帮你擦亮眼 随着时代的发展,越来越多的人对 ...

  2. SpringMVC之数据传递二

    上一篇学习了从url或view中传数据到Controller中,今天学习下数据从Controller传到view中,主要有4种. 一.ModelAndView 处理方法返回值类型为 ModelAndV ...

  3. Java面试题1--关键字

    1. final关键字有哪些用法? 修饰类.方法和变量. (1) final变量是只读的,不允许改变其引用,与static共用可声明常量.JVM会对final变量进行优化,比如常量折叠. (2) fi ...

  4. Git reset到某一次commit

    下图场景:张三和李四并行开发,张三提交commit1(bc2dd00),李四提交commit2(7f019d2),张三再提交commit3(44d4fc5),如果此时李四revert commit2, ...

  5. 初始Spring MVC——练手小项目

    初始Spring MVC 前几天开始了我的spring学习之旅,由于之前使用过MVC模式来做项目,所以我先下手的是 Spring MVC,做个练手项目,非常简单 项目介绍: 用户输入信息 -> ...

  6. java 反射(Reflection)

    看了很多关于java 反射的文章,自己把所看到的总结一下.对自己,对他人或多或少有帮助吧. Java Reflection是什么? 首先来看看官方文档Oracle里面对Reflection的描述: R ...

  7. centOS7配置DNS服务器

    世上无难事只怕有心人,遇事千万千万不要抵触,消极的情绪是失败之母,一点一滴,踏踏实实是通往幸福的捷径. 历经激动,受挫,抵触和鼓励以及征服,终于配好了让我欢喜让我忧的dns.在这里记录下来,希望能够给 ...

  8. [HNOI 2015]菜肴制作

    Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号 ...

  9. ●UVA 1608 Non-boring sequences

    题链: https://vjudge.net/problem/UVA-1608#author=chenchonghan题解: 分治 如果一个区间[l,r]里面在p位置出现了一个只出现一次的元素,(如果 ...

  10. hdu 5830 FFT + cdq分治

    Shell Necklace Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...