最近公司在开发一个扫码的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的写法,可以到官网查询资料。语法和其他数据库写法基本一致。