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的写法,可以到官网查询资料。语法和其他数据库写法基本一致。

猜你喜欢

转载自blog.csdn.net/cailongbiaoyuli/article/details/80949287