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数据库的操作,基本上基础的东西就是这些了,如果有其他的,想到了再补上。

 

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

你可能感兴趣的:(android SQLite)