开发者社区> 啊啊啊88jdk> 正文

Android存储之SQLite数据库

简介: Android存储之SQLite数据库数据库 创建数据库 package ……; import android.
+关注继续查看

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();
        }
    }
}

查看数据库

这里写图片描述

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据存储之-SQLite数据库一
数据存储之-SQLite数据库一
45 0
数据存储之-SQLite数据库二
数据存储之-SQLite数据库二
11589 0
SQLite数据库安装及简单使用
1.什么是SQLite SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。 在sqlite中,数据库的信息是存储在一个文件中的,这种特性非常适合个人的小项目开发
113 0
【SQLite】C++链接SQLite数据库
【SQLite】C++链接SQLite数据库
119 0
sqlite数据库
• 创建Entry的内部类, 该类实现BaseColumns • tableName定义常量字符串 • 为table的每一项什么常量字符串
122 0
Android开发当中SQLite数据库的应用
这个应该算是小型数据库了。 我在DJANGO开发中已不怎么用它啦。
8782 0
+关注
啊啊啊88jdk
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
《深入探索Android热修复技术原理》
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关镜像