Android Sqlite的使用

粗略的记录一下Android数据库的处理方式。android中本地存储数据分为4种:SharePreference、SQLite、Content Provider和File,都是存放于“data/data/程序包名”目录下。可以看出,android对于数据,基本上都是私有化的。


SQLite是一种轻型数据库,目前移动设备端,基本都使用SQLite。更多关于sqlite的使用,就参看这里:http://www.sqlite.org/

Android上使用SQLite的时候,通常会操作两个类:SQLiteDatabaseSQLiteOpenHelper

 

SQLiteOpenHelper类

类的描述:A helper class to manage database creation and version management。可以知道,这个类主要是用来创建数据库以及管理数据库版本更新。实际的应用:

package com.lanyuweng.mibaby.DataUtil; 

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

import com.lanyuweng.Config.Config;

public class DatabaseHelper extends SQLiteOpenHelper{

    public DatabaseHelper(Context context) {
        super(context,Config.DBNAME,null,Config.VERSION);
    }

    //IF NOT EXISTS 
    public static final String sql_createtable = "CREATE TABLE NoteItems (Note_title varchar, Note_content varchar, Note_create_time datetime)";
    public static final String sql_deletetable = "DROP TABLE IF EXISTS NoteItems";
    
    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(sql_createtable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        
        if(newVersion > oldVersion){
            db.execSQL(sql_deletetable);
        }else{
            return;
        }
        onCreate(db);
        
    }
}
 

复写其onCreate方法,在其方法执行数据库创建,同时在onUpgrade方法中对数据库更新进行管理。基本就可以满足基本的功能了,更多的方法就多查询一下文档多了解一点了。

那么实际的数据库操作,就将其放到一个数据库管理文件中,在这个当中呢,可以进行增,删,改,查,或者更多的数据库操作方法。核心的就是使用execSQL(数据库语句),看看下面:

package com.lanyuweng.mibaby.DataUtil; 

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

public class DatabaseManager {

    public SQLiteDatabase sql_db;
    public DatabaseHelper sql_db_helper;
    private Cursor cursor;
    
    public DatabaseManager(Context context) {
        
        sql_db_helper = new DatabaseHelper(context);
        sql_db = sql_db_helper.getWritableDatabase();
        
    }
    
    public void add_NoteItem(String note_title,String note_content,String note_create_time){
        
        String sql = "INSERT INTO NoteItems(Note_title, Note_content, Note_create_time) values"+
                                    "(‘"+note_title+"‘,‘"+note_content+"‘,‘"+note_create_time+"‘)";
        sql_db.beginTransaction();
        
        try {
            sql_db.execSQL(sql);
            sql_db.setTransactionSuccessful();
        }
        finally{
            sql_db.endTransaction();            
        }
    }
    
    public void del_NoteItem(String note_title){
        
        String sql = "DELETE FROM NoteItems WHERE Note_title= ‘"+note_title+"‘";
        sql_db.beginTransaction();
        try {
            sql_db.execSQL(sql);
            sql_db.setTransactionSuccessful();
        }
        finally{
            sql_db.endTransaction();            
        }
    }
    
    public void modify_NoteIem(String old_note_title,String new_note_title,String note_content,String note_create_time){
        
        String sql = "UPDATE TABLE NoteItems SET Note_title="+new_note_title+", Note_content="+note_content+",note_create_time="+note_create_time+"where Note_title="+old_note_title;
        sql_db.beginTransaction();
        try {
            sql_db.execSQL(sql);
            sql_db.setTransactionSuccessful();
        }
        finally{
            sql_db.endTransaction();
        }
    }
    
    public Cursor search_NoteItem(String note_title){
        
        String sql = "SELECT * FROM NoteItems WHERE Note_title LIKE"+"%"+note_title+"%";
        sql_db.beginTransaction();
        try {
            cursor = sql_db.rawQuery(sql, null);
            sql_db.setTransactionSuccessful();
        }
        finally{
            sql_db.endTransaction();            
        }
        return cursor;
    }
    
    public Cursor selectAll_NoteItems(){
        
        String sql = "SELECT * FROM NoteItems";
        sql_db.beginTransaction();
        
        try {
            cursor = sql_db.rawQuery(sql, null);
        } finally{
            sql_db.endTransaction();
        }
        return cursor;
        
    }
    
    public Cursor getLimitItems(int start,int end){
        
        String sql = "SELECT * FROM NoteItems LIMIT "+start+","+end;
        
        sql_db.beginTransaction();
        try {
            cursor = sql_db.rawQuery(sql,null);
            cursor.moveToFirst();
            
        } finally{
            sql_db.endTransaction();
        }
        return cursor;
    }
    
}
 

以上,实现了对数据库增删改查的逻辑,其中不得不提到一个Cursor类,Cursor类能够方便的操作数据库。更多关于Cursor的使用,推荐一篇文章,Cursor的使用

 

至此,Android数据库的操作,基本上基础的东西就是这些了,如果有其他的,想到了再补上。

 

多记录一点,常常回头来看,会进步的。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。