第七讲Android中的SQLite

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();

猜你喜欢

转载自blog.csdn.net/qq_44867340/article/details/108816813
今日推荐