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

查看数据库

这里写图片描述

相关文章
|
6月前
|
SQL 存储 数据库
SQL实践篇(二):为什么微信用SQLite存储聊天记录
SQL实践篇(二):为什么微信用SQLite存储聊天记录
390 1
|
6月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
81 0
|
5月前
|
数据库 Android开发 数据安全/隐私保护
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
224 2
|
5月前
|
SQL 存储 数据库
48. 【Android教程】数据库:SQLite 的使用
48. 【Android教程】数据库:SQLite 的使用
73 1
|
5月前
|
存储 缓存 数据库
Android之SQLite数据库使用详解
Android之SQLite数据库使用详解
|
5月前
|
存储 数据库 Android开发
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
在 Android Studio 中结合使用 SQLite 数据库实现简单的注册和登录功能
168 0
|
6月前
|
XML 数据库 数据安全/隐私保护
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
76 0
|
6月前
|
SQL 数据库 数据安全/隐私保护
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
450 0
|
存储 SQL 关系型数据库
Android数据库Sqlite的基本用法及升级策略
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
299 0
|
存储 数据库 文件存储
android 读取本地数据库db文件(Android sqlite)
android 读取本地数据库db文件(Android sqlite)
1179 0
android 读取本地数据库db文件(Android sqlite)