Android 開發:數據庫操作-android 使用 litepal 操作本地數據庫


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnAndroid" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

 

說明

android手機自帶本地數據庫 SQLite ,操作本地數據庫android給了api

不過這節的重點是講解如何使用 郭霖(第一行代碼) 寫的litepal 操作數據庫

在使用litepal之前,咱們先看下使用android 自帶的api操作數據庫

 

打開本節代碼

 

 

 

 

 

1.用戶可以去百度了...這是Android  api操作數據庫最基本的規定

 

 

 

 

 

復制代碼
public class DataBase extends SQLiteOpenHelper {
    private final static String TABLE_NAME = "MyTable";//表格名字
    private final static String ID = "id"; //第一個字段
    private SQLiteDatabase db = null;
    public final static String UserName = "name";//第二個字段
    public DataBase(Context context, String DATABASE_NAME, int DATABASE_VERSION) {
        super(context,DATABASE_NAME, null, DATABASE_VERSION);
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        String sql = "CREATE TABLE " + TABLE_NAME +
                " (" +
                ID + " INTEGER primary key autoincrement, " +
                UserName + " text "+
                ")";
        db.execSQL(sql);
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
        String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
        db.execSQL(sql);
        onCreate(db);
    }

    /**
     * insert data
     * @param name
     * @return
     */
    public long insert(String name)
    {
        db = getWritableDatabase();
        /* ContentValues */
        ContentValues cv = new ContentValues();
        cv.put(UserName, name);

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

    /**
     * delete data
     * @param name
     * @return
     */
    public long delete(String name)
    {
        db = getWritableDatabase();
        String where = UserName + " = ?";
        String[] whereValue ={name};
        long row = db.delete(TABLE_NAME, where, whereValue);
        db.close();
        return row;
    }

    /**
     * query data
     * @param name
     * @return
     */
    public Cursor query(String name)
    {
        db = getWritableDatabase();
        Cursor cursor = null;
        String str = null;

        str = "select "+name +" from "+ TABLE_NAME;
        cursor = db.rawQuery(str,null);

        return cursor;
    }
}
復制代碼

 

 

 2.上面的程序是生成這樣一張表格

 

 

3.插入數據

 

 

 

4.刪除數據

 

 

 5.查詢數據

 

 

 

使用

 

 

 

 

 

 

 

 

 

接着看litepal

1.把jar包引入自己工程

我使用的是2.0版本

 

 

 

 

 

2.建一個java文件,繼承 LitePalSupport

 

 

復制代碼
public class DataBaseLitepal extends LitePalSupport {
    private  int id;//ID
    private  String UserName;//用戶名
    private  String UserPwd;//密碼public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUserName() {
        return UserName;
    }
    public void setUserName(String userName) {
        UserName = userName;
    }
    public String getUserPwd() {
        return UserPwd;
    }
    public void setUserPwd(String userPwd) {
        UserPwd = userPwd;
    }
}
復制代碼

 

 

上面的意思是建一張這樣的表格

 

 

3.在assets文件夾里面建一個litepal.xml文件

如果沒有 assets 文件夾,建一個文件夾,assets 是放android資源的文件夾

 

 

<mapping class="com.example.myapplication.myapplicationlitepal.DataBaseLitepal"></mapping>

里面的calss需要寫全路徑.

 

復制代碼
<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <!-- 數據庫名 -->
    <dbname value="Testlitepal" ></dbname>
    <!-- 數據庫版本 -->
    <version value="1" ></version>

    <!--數據庫文件路徑,把所有的數據庫文件放到此處 -->
    <list>
        <mapping class="com.example.myapplication.myapplicationlitepal.DataBaseLitepal"></mapping>
    </list>
</litepal>
復制代碼

 

 

4.初始化

1.建一個  MyApplication  繼承 Application 

在 onCreate 里面寫上下面兩句

注: Application onCreate 是程序一啟動就執行的函數,目的是讓litepal第一時間初始化

如果自己有了 Application,只需要添加下面兩句即可

 

 

/*=================litepal數據庫=====================*/
        LitePal.initialize(this);
        //獲取到SQLiteDatabase的實例,創建數據庫表
        SQLiteDatabase db = LitePal.getDatabase();

 

 

2.在 AndroidManifest.xml 文件中配置下 

 

 

 

5.添加和查詢數據

 

 

復制代碼
/*添加數據*/
        DataBaseLitepal dataBaseLitepal = new DataBaseLitepal();
        dataBaseLitepal.setUserName("yang");
        dataBaseLitepal.setUserPwd("11223344");
        dataBaseLitepal.save();
        /*查詢數據*/
        List<DataBaseLitepal> allSongs = LitePal.where("UserName=?","yang").find(DataBaseLitepal.class);
        for (DataBaseLitepal dataBaseLitepal1 :allSongs) {
            int id = dataBaseLitepal1.getId();
            String UserName = dataBaseLitepal1.getUserName();
            String UserPwd = dataBaseLitepal1.getUserPwd();
            Log.d("MainActivity",id+" "+ UserName+ " " + UserPwd);
        }
復制代碼

 

 

6.修改和刪除數據

 

復制代碼
/*修改數據:把用戶yang的密碼改為1234567890*/
        ContentValues values = new ContentValues();
        values.put("UserPwd","1234567890");
        int updateAllNum = LitePal.updateAll(DataBaseLitepal.class,values,"UserName =  ? ","yang");
        /*查詢數據*/
        List<DataBaseLitepal> dataBaseLitepals = LitePal.where("UserName=?","yang").find(DataBaseLitepal.class);
        for (DataBaseLitepal dataBaseLitepal1 :dataBaseLitepals) {
            int id = dataBaseLitepal1.getId();
            String UserName = dataBaseLitepal1.getUserName();
            String UserPwd = dataBaseLitepal1.getUserPwd();
            Log.d("MainActivity修改后查詢",id+" "+ UserName+ " " + UserPwd);
        }
        /*刪除用戶名為yang,密碼為1234567890的數據 */
        int delAllNum = LitePal.deleteAll(DataBaseLitepal.class,"UserName = ? and UserPwd = ? ","yang","1234567890");
復制代碼

 

 

7.更新數據庫

1.假設后期項目需求增加了手機號

 

 

2.在litepal設置一個新版本即可

 

 

 

 

 

補充

1.查詢所有數據

List<DataBaseLitepal> findData = LitePal.findAll(DataBaseLitepal.class);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM