Android中Sqlite的簡單使用

最近公司在開發一個掃碼的APP,在一個做保存單據的時候使用到了sqlite的功能,android sqlite是安卓內置數據庫,可以很方便的存儲我們想要保存的數據。話不多說,開始上示例。


1.要寫一個類來繼承SQLiteOpenHelper

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

/**
 * TODO: 掃碼錶頭表創建
 * 在登陸系統會自動創建表,退出時自動刪除表
 * 主要作用是保存斷網時的掃碼錶頭數據
 * @Author:clb
 * @date:2018-6-22 下午6點14分
 */
public class DBHelperH extends SQLiteOpenHelper {
    //數據庫版本號
    private static final String name = "yjkjtempdate.db"; //數據庫路徑及名稱
    private static final int version = 1; //數據庫版本

    public DBHelperH(Context context) {
        super(context, name, null, version);
    }

    /*
     * 當數據庫創建的時候被調用
     * */
    @Override
    public void onCreate(SQLiteDatabase db) {

        System.out.println("創建數據庫和表");
        //SQLite數據創建支持的數據類型: 整型數據,字符串類型,日期類型,二進制的數據類型
        String sql = "create table tableh1(" +
                "id integer primary key AUTOINCREMENT," +
                "hcontent text,\n" +
                "errdate int(11),\n" +
                "hbid VARCHAR(50) " + ")";
        //execSQL用於執行SQL語句
        //完成數據庫的創建
        db.execSQL(sql);
        //數據庫實際上是沒有被創建或者打開的,直到getWritableDatabase() 或者 getReadableDatabase() 方法中的一個被調用時纔會進行創建或者打開
    }

    /**
     * TODO: SqlLite數據庫版本更新
     * @param db
     * 數據庫
     * @param oldVersion
     * 舊版本號
     * @param newVersion
     * 新版本號
     * @date:2018-5-25 下午3點15分
     */
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        System.out.println("更新數據庫版本爲:" + newVersion);
    }
}

寫好DBHelperH類之後,就可以開始使用sqlite了。

2.簡單使用

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;

public class Test extends AppCompatActivity {
    public String errdate;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        // 讀取數據庫,沒有會創建一個
        DBHelperH dbHelpershow = new DBHelperH(Test.this);
        SQLiteDatabase sqliteDatabase = dbHelpershow.getReadableDatabase();
        SQLiteDatabase sqliteDatabases = dbHelpershow.getWritableDatabase();
        // 查詢數據
        String sqls = "select count(*) from tableh1 where id = 1";
        Cursor cursors = sqliteDatabase.rawQuery(sqls, null);
        if(cursors.moveToNext()){
            int count = cursors.getInt(0);
            Log.d("asaaaaaaaaaaaaaaa","我十二");
            if(count>0){
                Log.d("asaaaaaaaaaaaaaaa","有該數據不能再寫入數據庫!");
            }else {
                Log.d("asaaaaaaaaaaaaaaa","沒有該數據");
                // 插入數據
                // 創建ContentValues對象
                ContentValues valuesH = new ContentValues();
                // 失敗單據的時間設置 獲取系統時間的10位的時間戳
                long time = System.currentTimeMillis() / 1000;
                errdate = String.valueOf(time);

                // 向該對象中插入鍵值對 表頭數據
                valuesH.put("hbid", 123123123);
                valuesH.put("errdate", errdate);
                valuesH.put("hcontent", "asdasdasda");
                // 調用insert()方法將數據插入到數據庫當中
                sqliteDatabases.insert("tableh1", null, valuesH);
            }
        }

        //刪除數據
        sqliteDatabases.delete("tableh1", "id=?", new String[]{"1"});


        // 修改數據
        ContentValues values2 = new ContentValues();
        values2.put("hbid", 412312);
        values2.put("errdate", errdate);
        values2.put("hcontent", "我是數據");

        // 調用update方法修改數據庫
        sqliteDatabases.update("tableh1", values2, "id=?", new String[]{"1"});

        // 刪除數據庫
        deleteDatabase("tempdata");
        
        sqliteDatabases.close();
    }
}

更多sqlite的寫法,可以到官網查詢資料。語法和其他數據庫寫法基本一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章