1.SQLite的简介
SQLite,是一款轻型的数据库,它的设计目标是嵌入式产品,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。
Android中使用SQLiteDatabase代表数据库,并且提供一系列的方法来操作数据。
2.SQLite的操作
1.创建或者打开数据库
database = SQLiteDatabase.openOrCreateDatabase(path + "/mydb.db", null);
2.创建数据库表
String createSQL = "CREATE TABLE EMPLOYEE(" + "ID INTEGER PRIMARY KEY AUTOINCREMENT," + "NAME TEXT," + "SALARY FLOAT)"; database.execSQL(createSQL);//执行SQL语句 break;
3.插入数据
ContentValues newData = new ContentValues(); //添加数据时,第一个参数必须同数据库表中字段名称一致 newData.put("name", "张三"); newData.put("salary", 4000.0f); //第二个参数是当第三个参数为null时起作用 long rowId = database.insert("employee",null, newData); Log.e("新插入的记录的id",rowId+""); break;
4.查询数据库表
Cursor result = database.query("EMPLOYEE",null, null,null,null,null,null); //将游标移动到第一条记录 if (result.moveToFirst()){ ArrayList<Employee> employees = new ArrayList<>(); do { Employee employee = new Employee(); //getColumnIndex方法区分字段名的大小写 employee.setName(result.getString( result.getColumnIndex("NAME"))); employee.setSalary(result.getFloat( result.getColumnIndex("SALARY"))); // Log.e("职工信息",employee.toString()); employees.add(employee); }while (result.moveToNext()); Log.e("AAA", employees.toString()); } break;
5.修改数据
ContentValues updateData = new ContentValues(); updateData.put("SALARY", 5000.0f); int row = database.update("EMPLOYEE",updateData, "name=?", new String[]{"张三"}); Log.e("修改的行数", row + ""); break;
6.删除数据
int rowNum = database.delete("EMPLOYEE", "ID=?",new String[]{"3"}); Log.e("删除的条数",rowNum+""); break;
3.SQLite中事务的处理
1.事务处理
//处理事务 //开启数据库事务 database.beginTransaction(); //事务操作 try { for (int i = 0; i < 3; i++){ ContentValues values = new ContentValues(); values.put("name","李四"); values.put("salary",3000.0f); database.insert("employee",null,values); } database.setTransactionSuccessful();//设置事务成功执行 }finally { //结束事务 //判断:如果执行了setTransactionSuccessful方法就提交事务 //否则回滚事务 database.endTransaction(); } break;
4.SQLiteOpenHelper类
Android提供SQLiteOpenHelper类来管理数据库。主要负责数据库的创建、版本更新,一般情况通过创建它的子类并扩展onCreate()和onUpgrade()方法来实现。
使用步骤:
1.自定义MyDBHelper类继承自SQLiteOpenHelper类
public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { //创建数据库表,第一次打开数据库时调用,仅执行一次 String createSQL = "CREATE TABLE EMPLOYEE(" + "ID INTEGER PRIMARY KEY AUTOINCREMENT," + "NAME TEXT," + "SALARY FLOAT)"; db.execSQL(createSQL);//执行SQL语句 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //更新数据库时执行 Log.e("MyDBHelper","onUpgrade"); } }
2.用MyHelper来创建数据库
MyDBHelper myDBHelper = new MyDBHelper(this, "employee.db", null, 3);//数据库的版本号 database = myDBHelper.getWritableDatabase();