使用android sqlite读取数据库的方法

李国帅 2018/7/24

现在打算使用greendao,把以前的方法简单记录下来.

使用简单,不需要多解释

1、创建SQLiteOpenHelper继承类

package com.lgs.mvpmodule.bookstore.presenter;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.concurrent.locks.ReentrantLock;

/**
 *
保存书籍信息表
 */

public class NovelTbl extends SQLiteOpenHelper {
    private final static String DATABASE_NAME = "books.db";
    private final static int DATABASE_VERSION = 1;
    private final static String TABLE_NAME = "novels";

public final static String ID = "id";//0 id 数据库中加入此字段
    public final static String FILE_TYPE = "file_type";//1 资源名称
    public final static String FILE_NAME = "file_name";//2 中文名称
    public final static String AUTHOR = "author";// 3:作者
    public final static String TITLE = "title";//4:标题
    public final static String DESCRIBE = "describe";//5:描述

public NovelTbl(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

// 创建table
    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "CREATE TABLE " + TABLE_NAME + " (" + ID
               
+ " INTEGER PRIMARY KEY NOT NULL UNIQUE DEFAULT ( 0 ), " + FILE_TYPE + "  INT DEFAULT ( 1 ), "
                + FILE_NAME + " TEXT DEFAULT ( '' ), " + TITLE
               
+ " TEXT DEFAULT ( '' ), " + AUTHOR
               
+ " TEXT DEFAULT ( '' ), " + DESCRIBE + " TEXT DEFAULT ( '' ));";
        db.execSQL(sql);

//        CREATE TABLE poems (
//                id        INTEGER    PRIMARY KEY AUTOINCREMENT
//                NOT NULL,
//                file_type INT        DEFAULT (1),
//                file_name TEXT (200) NOT NULL,
//                title     TEXT (200) NOT NULL,
//                author    TEXT (50)  DEFAULT lgs,
//                describe  TEXT
//        );

}

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //重建数据库,所有数据丢失
        if (oldVersion != newVersion) {
            String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
            db.execSQL(sql);
            onCreate(db);
        }
    }

public Cursor select() {
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null);
        return cursor;
    }

// 增加操作
    public long insert(Integer id) {
        SQLiteDatabase db = this.getWritableDatabase();
        /* ContentValues */
        ContentValues cv = new ContentValues();
        cv.put(ID, id.toString());
        long row = db.insert(TABLE_NAME, null, cv);
        return row;

//        INSERT INTO book_info (  id ) VALUES ( 0 );
    }

public long insert(String sInfo) {
        String[] aryInfo = sInfo.split(",");
        // String name = aryInfo[0];
        if (aryInfo.length < 5)
            return -1;

SQLiteDatabase db = this.getWritableDatabase();

ContentValues cv = new ContentValues();
        cv.put(ID, Integer.valueOf(aryInfo[0]));
        cv.put(FILE_TYPE, String.valueOf(aryInfo[1]));
        cv.put(FILE_NAME, String.valueOf(aryInfo[2]));
        cv.put(TITLE, String.valueOf(aryInfo[3]));
        cv.put(AUTHOR, String.valueOf(aryInfo[4]));
        cv.put(DESCRIBE, String.valueOf(aryInfo[5]));

long row = db.insert(TABLE_NAME, null, cv);
        return row;

//INSERT INTO novels (  id,file_type,file_name,title,author,describe )
// VALUES (21722,2,"sanguo","古典名著:三国演义","元末明初:罗贯中","");

}

// 删除操作
    public void delete(Integer id) {
        SQLiteDatabase db = this.getWritableDatabase();
        String where = ID + " = ?";
        String[] whereValue = {id.toString()};
        db.delete(TABLE_NAME, where, whereValue);

// delete  from book_info;
    }

// 修改操作
    public long update(Integer id, String sInfo) {
        String[] aryInfo = sInfo.split(",");
        // String name = aryInfo[0];
        if (aryInfo.length < 4)
            return -1;

SQLiteDatabase db = this.getWritableDatabase();
        String where = ID + " = ?";
        String[] whereValue = {id.toString()};

ContentValues cv = new ContentValues();
        cv.put(ID, Integer.valueOf(aryInfo[0]));
        cv.put(FILE_TYPE, String.valueOf(aryInfo[1]));
        cv.put(FILE_NAME, String.valueOf(aryInfo[2]));
        cv.put(TITLE, String.valueOf(aryInfo[3]));
        cv.put(AUTHOR, String.valueOf(aryInfo[4]));
        cv.put(DESCRIBE, String.valueOf(aryInfo[5]));

long row = db.update(TABLE_NAME, cv, where, whereValue);
        return row;

// UPDATE novels SET id = 2131230722,file_type=2, file_name = "sanguo" , title = "古典名著:三国演义" , author = "元末明初:罗贯中" , describe = "" WHERE id = 0
    }

private final ReentrantLock mLock = new ReentrantLock(true);

public void lock() {
        mLock.lock();// 多线程安全
    }

public void unlock() {
        mLock.unlock();
    }

}

2、使用方法

@SuppressLint("UseSparseArrays")static public boolean loadBooks(Context context) {      bookDb = new NovelTbl(context);Cursor mCursor;mCursor = bookDb.select();bookDb.lock();int count = mCursor.getCount();if (count == 0) {//数据不存在,添加图书信息bookDb.insert("2131230722,sanguo,古典名著:三国演义,元末明初:罗贯中,无");
…}bookDb.unlock();return true;}

使用android sqlite读取数据库的简单方法相关推荐

  1. Android SQLite嵌入式数据库

    Android SQLite嵌入式数据库(一) SQLite的CURD Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加( ...

  2. mysqli mysql_PHP使用mysqli操作MySQL数据库的简单方法

    PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 . 而 mysqli 恰恰也支持了这些新特性. ...

  3. Android SQLite (一) 数据库简介

    大家好,今天来介绍一下SQLite的相关知识,并结合Java实现对SQLite数据库的操作. SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎.它支持大多数的SQL92标准 ...

  4. Android 中短信数据库的简单操作

    Android APK操作短信数据时,不能使用SQLHelper直接操作,需要使用协议,协议使用Uri转义 content://sms/inbox         收件箱  content://sms ...

  5. android sqlite加密数据库,Android Sqlite数据库加密

    Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收 ...

  6. Unity读取数据库的简单思路

    1.背景介绍 使用Unity管理较多数据时,数据库的读写便成了较为关键操作.写入不必多说,许多博客都有介绍.而读取则是一个麻烦事,如果使自己读取的数据和结构便于修改,不出错,成了我首先考虑的问题(性能 ...

  7. android 图片存储读取数据库中,如何在android中存储(位图图像​​)并从sqlite数据库中检索图像?...

    设置数据库public class DatabaseHelper extends SQLiteOpenHelper { // Database Version private static final ...

  8. excel导入数据库的简单方法

    一个简单的方法将excel导入数据库 private void Plan_Import_Execl()         {             OpenFileDialog fileDialog ...

  9. 读取手机联系人简单方法(id,姓名,手机号)

    <uses-permission android:name="android.permission.READ_CONTACTS"/> 布局文件 <?xml ver ...

  10. android判断是否json格式,简单方法判断字符串是否是json字符串

    多张图片保存时常被储存为图片链接的字符串格式 [ {"photo":"http://localhost/upload/images/2018/01/21/20180121 ...

最新文章

  1. linun——SElinux的简单理解
  2. C语言DCI(OCI)方式连接DM数据库
  3. nginx将ip+端口号映射为域名
  4. REVERSE-PRACTICE-CTFSHOW-3
  5. 使用ffmpeg捕获USB外部摄像头视频流
  6. 线上每课时20元 北京上海义务教育阶段学科类校外培训指导价公布
  7. Linux下的硬件驱动——USB设备(下)
  8. azure云数据库_Azure Data Studio中的服务器和数据库仪表板
  9. linux基础--awk文本分析工具详解
  10. java数字常量_数字常量 - javawebsoa - 博客园
  11. Cannot find class [***] for bean with name '***' defined in file[***]
  12. MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB - 4
  13. 计算机高等数学试题及答案,北大计算机系考研_历年高等数学真题附答案
  14. pcfg 自然语言处理_自然语言处理:原理简明教程09-句法分析,语义分析和篇章分析...
  15. 大话西游2服务器修改,大话西游2:9.17维护解读:五倍次数修改全服上线,灵兽村要变样啦...
  16. SQL基础(廿)--- 抑制重复
  17. 获取当前的url并移除不想要的字段
  18. 计算机与u盘连接使用,u盘虽然与电脑连接,但是插上后却没有反应,这该如何解决?...
  19. 台式电脑有哪些零件组成 台式电脑主件的形象解释
  20. 大型数据库Oracle基础练习

热门文章

  1. python数字及字母的分离_Python 分割文本使得 字母和数字 分开?
  2. 如何调节肠道菌群?常见天然物质、益生菌、益生元的介绍
  3. 联想笔记本电脑开机无法修复计算机,联想笔记本开机没反应怎么办 笔记本无法开机的解决方法...
  4. 关于高通8953修改动态logo bootanimation不起作用问题
  5. unity创建一个VR项目(一)
  6. c语言逗号分隔字符串,[数字用逗号隔开怎么读]看到一个数字中间有逗号
  7. java计算税率例子
  8. 【名师大讲坛】叶俊受《金刚经》的启发创造“名非论”-火锅智烩节目组根据视频文字整理
  9. 虚拟机快照、迁移、删除
  10. python绘画海贼王_入门级项目实战,Python生成海贼王云图!