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

查看数据库

这里写图片描述

相关文章
|
3月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
7天前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
81 0
|
4月前
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
6月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
207 12
|
6月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
302 14
|
7月前
|
存储 SQL NoSQL
【赵渝强老师】达梦数据库的逻辑存储结构
本文介绍了达梦数据库的存储结构,包括逻辑和物理存储两部分。逻辑存储结构由数据库(Database)、表空间(Tablespaces)、段(Segments)、簇(Cluster)和页(Page)组成。数据库是最大逻辑单元,包含所有表、索引等;表空间由数据文件组成,用于存储对象;段由簇构成,簇包含连续的数据页;页是最小存储单元。文中还提供了查询表空间、段和页大小的SQL语句,并附有视频讲解和示意图。
256 7
|
7月前
|
存储 SQL 安全
【赵渝强老师】达梦数据库的物理存储结构
本文介绍了达梦数据库的存储结构及各类物理文件的作用。达梦数据库通过逻辑和物理存储结构管理数据,包含配置文件(如dm.ini、sqllog.ini)、控制文件(dm.ctl)、数据文件(*.dbf)、重做日志文件(*.log)、归档日志文件、备份文件(*.bak)等。配置文件用于功能设置,控制文件记录数据库初始信息,数据文件存储实际数据,重做日志用于故障恢复,归档日志增强数据安全性,备份文件保障数据完整性,跟踪与事件日志辅助问题分析。这些文件共同确保数据库高效、稳定运行。
290 0
|
8月前
|
存储 人工智能 监控
时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累,精准聚焦行业痛点,并携手 TDengine 提供高效解决方案。
158 0
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
221 0
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
398 2