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

查看数据库

这里写图片描述

相关文章
|
1月前
|
SQL 存储 数据库
SQL实践篇(二):为什么微信用SQLite存储聊天记录
SQL实践篇(二):为什么微信用SQLite存储聊天记录
64 1
|
3月前
|
存储 数据库连接 数据库
Android数据存储:解释SQLite数据库在Android中的使用。
Android数据存储:解释SQLite数据库在Android中的使用。
41 0
|
8月前
|
API 数据库 Android开发
Android 中SQLite数据库的使用详解
Android 中SQLite数据库的使用详解
63 0
|
8月前
|
数据库 Android开发 数据库管理
Android使用Room操作SQLite数据库让其变得无比高效和简洁(进一步完善用RecyclerView显示数据库中的数据)
Android使用Room操作SQLite数据库让其变得无比高效和简洁(进一步完善用RecyclerView显示数据库中的数据)
52 0
|
4月前
|
XML 数据库 数据安全/隐私保护
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
Android App规范处理中版本设置、发布模式、给数据集SQLite加密的讲解及使用(附源码 超详细必看)
41 0
|
4月前
|
SQL 数据库 数据安全/隐私保护
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
Android Studio App开发中数据库SQLite的解析及实战使用(包括创建数据库,增删改查,记住密码等 附源码必看)
60 0
|
5月前
|
Shell 数据库 开发工具
(超详细)android中SqLite数据库的使用(一文包懂包会)
(超详细)android中SqLite数据库的使用(一文包懂包会)
121 0
|
6月前
|
SQL 安全 数据库
Android -SQLite 的增删改查(CRUD)
Android -SQLite 的增删改查(CRUD)
55 0
|
8月前
|
存储 数据库 Android开发
Android 使用Room操作SQLite数据库让其变得无比高效和简洁(前一篇文章的完善)
Android 使用Room操作SQLite数据库让其变得无比高效和简洁(前一篇文章的完善)
117 0
|
8月前
|
数据库 Android开发 数据库管理
Android 使用Room操作SQLite数据库让其变得无比高效和简洁(教程一)
Android 使用Room操作SQLite数据库让其变得无比高效和简洁(教程一)
138 0