欢迎投稿

今日深度:

使用android sqlite读取数据库的简单方法,androidsqlite

使用android sqlite读取数据库的简单方法,androidsqlite


使用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;

    }

 

www.htsjk.Com true http://www.htsjk.com/SQLite/36376.html NewsArticle 使用android sqlite读取数据库的简单方法,androidsqlite 使用android sqlite读取数据库的方法 李国帅 2018/7/24 现在打算使用greendao,把以前的方法简单记录下来. 使用简单,不需要多解释 1、创建...
相关文章
    暂无相关文章
评论暂时关闭