Android SQLite数据库的创建及两种方式实现增删改查

一,SQLite简介

也是使用SQL语句,操作数据库的;也是关系型数据库的一种;特点:运算速度快,占用资源少;

二,创建SQLiteOpenHelper

Android使用SQLite数据库,就必须继承SQLiteOpenHelper,而且必须实现三个方法,这三个方法缺一不可,是固定的形式;一个是构造函数(一般是四个参数的构造),onCreate,onUpgrade;

public class DBHelper extends SQLiteOpenHelper {
    public DBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //创建表的SQL语句
        String table = "create table user(id int ,name varchar(20))";
        db.execSQL(table);
        Log.d("","数据库创建了");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.d("","数据库升级 了");
    }
}

构造函数四个参数:

  • Context:上下文,这个相信都知道
  • name:就是要创建的数据库名字;
  • CursorFactory:游标工厂,相当于结果集;传参的时候一般传入null,系统默认使用默认的Cursor;
  • version:版本号,当version改变时就会调用onUpgrade方法升级;注意版本号不能回退;

三,创建数据库

创建数据库对象;

public class TestDB extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //创建数据库  名字可以不带.db,为了增加可读性,最好加上.db
        DBHelper helper = new DBHelper(this, "login.db", null, 1);

        //如果数据库不存在,则创建数据库,然后获取可读可写的数据库对象,如果存在,直接打开;
        SQLiteDatabase writableDatabase = helper.getWritableDatabase();
        //如果存储空间满了,获取一个只读数据库对象;
        SQLiteDatabase readableDatabase = helper.getReadableDatabase();
    }
}

四,创建表

一般时创建数据库的时候创建表,而且数据库一但创建成功onCreate方法就不会在调用;所以一般在再onCreate方法中创建表;

五,CRUD

直接SQL语句执行增删改查;SQL语句不清楚可以查看这篇文章,详细介绍了CRUD的使用https://blog.csdn.net/ezconn/article/details/103840699

增(插入数据)

public void insert() {
    DBHelper helper = new DBHelper(this, "user.db", null, 1);
    //如果数据不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
    SQLiteDatabase writableDatabase = helper.getWritableDatabase();

    writableDatabase.execSQL("insert into user(id,name,phone) values(?,?,?)", new Object[]{1, "藏三","13888"});
    writableDatabase.execSQL("insert into user(id,name,phone) values(?,?,?)", new Object[]{2, "李四","15888"});
    writableDatabase.execSQL("insert into user(id,name,phone) values(?,?,?)", new Object[]{3, "王五","16888"});
    writableDatabase.execSQL("insert into user(id,name,phone) values(?,?,?)", new Object[]{4, "赵六","17888"});
    writableDatabase.close();
}

删除数据 

private void delete() {
    DBHelper helper = new DBHelper(this, "user.db", null, 1);
    //如果数据不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
    SQLiteDatabase writableDatabase = helper.getWritableDatabase();

    writableDatabase.execSQL("delete from user where name = ?", new Object[]{"藏三"});
    writableDatabase.close();
}

 修改数据

private void update() {
    DBHelper helper = new DBHelper(this, "user.db", null, 1);
    //如果数据不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
    SQLiteDatabase writableDatabase = helper.getWritableDatabase();

    writableDatabase.execSQL("update user set id = ? where name = ?", new Object[]{6,"王五"});
    writableDatabase.close();
}

 查询数据

private void select() {
    DBHelper helper = new DBHelper(this, "user.db", null, 1);
    //如果数据不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
    SQLiteDatabase writableDatabase = helper.getWritableDatabase();
    Cursor cursor = writableDatabase.rawQuery("select name from user",null);
    while (cursor.moveToNext()) {
        String name = cursor.getString(cursor.getColumnIndex("name"));
        Log.d("查询name的值:", name);
    }
    writableDatabase.close();
}

SQLite Android API操作增删改查(CRUD)

增加数据

    public void insertApi() {
        DBHelper helper = new DBHelper(this, "user.db", null, 1);
        //如果数据库不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
        SQLiteDatabase db = helper.getWritableDatabase();
        //把插入的数据全部封装到ContentValues对象中
        ContentValues values = new ContentValues();
        values.put("id",10);
        values.put("name","阿龙");
        values.put("phone","11112233");
        db.insert("user", null, values);
    }

删除数据

private void deleteApi() {
        DBHelper helper = new DBHelper(this, "user.db", null, 1);
        //如果数据不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
        SQLiteDatabase db = helper.getWritableDatabase();
        
        //删除name=阿龙 id=10的记录
        db.delete("user","name =? and id = ?",new String[]{"阿龙","10"});
}

修改数据

private void updateApi() {
     DBHelper helper = new DBHelper(this, "user.db", null, 1);
     //如果数据不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
     SQLiteDatabase db = helper.getWritableDatabase();
     ContentValues values = new ContentValues();
     values.put("name", "张三丰");
     //修改id=1的记录中的name = 张三丰
     db.update("user", values, "id = ?", new String[]{"1"});
 }

查询数据

查询表中所有数据

private void selectApi() {
     DBHelper helper = new DBHelper(this, "user.db", null, 1);
     //如果数据不存在,则创建数据,然后获取可读可写的数据库对象,如果存在,直接打开;
     SQLiteDatabase db = helper.getWritableDatabase();

     //查询数据所有数据
     Cursor cursor = db.query("user", null, null, null, null, null, null,null);

     while (cursor.moveToNext()) {
          String name = cursor.getString(cursor.getColumnIndex("name"));
          String phone = cursor.getString(cursor.getColumnIndex("phone"));
          Log.d("查询name的值:", name + " phone: " + phone);
     }
}

方法及参数说明

public  Cursor query(String table,String[] columns,String selection,String[]  selectionArgs,String groupBy,String having,String orderBy,String limit);

各个参数的意义说明:
table:表名称
columns:列名称数组
selection:条件语句,相当于where
selectionArgs:条件字句,参数数组
groupBy:分组列
having:分组条件
orderBy:排序列
limit:分页查询限制
Cursor:返回值,相当于结果集ResultSet

事务

SQLite也是支持事务的

 

总结

SQLite不检查数据类型,都是以字符串的形式存入数据库的;会存在隐患,使用的过程中一定规范数据类型;

 

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,我们需要在 Android Studio 中创建一个 SQLite 数据库。 1. 在项目中创建一个新的文件夹,命名为“database”或者其他你喜欢的名称。 2. 在该文件夹下创建一个新的类,命名为“DatabaseHelper”。 3. 在该类中,继承“SQLiteOpenHelper”类,并重写“onCreate”和“onUpgrade”方法。 ```java public class DatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "myDatabase.db"; private static final int DATABASE_VERSION = 1; public DatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { // 创建表格 String sql = "CREATE TABLE IF NOT EXISTS student (" + "_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 更新表格 String sql = "DROP TABLE IF EXISTS student"; db.execSQL(sql); onCreate(db); } } ``` 在这个例子中,我们创建了一个名为“myDatabase.db”的数据库,以及一个名为“student”的表格(包含三个字段:_id、name、age)。如果该表格不存在,则在“onCreate”方法中创建该表格。如果该表格已经存在,但版本号发生了变化,则在“onUpgrade”方法中更新该表格。 接下来,我们需要创建一个“DataHelper”类来实现数据库增删改查功能。 ```java public class DataHelper { private DatabaseHelper dbHelper; private SQLiteDatabase db; public DataHelper(Context context) { dbHelper = new DatabaseHelper(context); db = dbHelper.getWritableDatabase(); } public void insert(String name, int age) { ContentValues cv = new ContentValues(); cv.put("name", name); cv.put("age", age); db.insert("student", null, cv); } public void update(int id, String name, int age) { ContentValues cv = new ContentValues(); cv.put("name", name); cv.put("age", age); db.update("student", cv, "_id = ?", new String[] { String.valueOf(id) }); } public void delete(int id) { db.delete("student", "_id = ?", new String[] { String.valueOf(id) }); } public Cursor queryAll() { Cursor cursor = db.query("student", null, null, null, null, null, null); return cursor; } public Cursor queryById(int id) { Cursor cursor = db.query("student", null, "_id = ?", new String[] { String.valueOf(id) }, null, null, null); return cursor; } public void close() { db.close(); dbHelper.close(); } } ``` 在这个例子中,我们创建了一个“DataHelper”类,用于实现增删改查功能。我们在该类中创建了以下方法: 1. “insert”方法:用于向表格中插入数据。 2. “update”方法:用于更新表格中的数据。 3. “delete”方法:用于删除表格中的数据。 4. “queryAll”方法:用于查询表格中的所有数据。 5. “queryById”方法:用于根据ID查询表格中的数据。 6. “close”方法:用于关闭数据库连接。 最后,我们可以在 Activity 中调用这些方法来实现具体的操作。例如: ```java DataHelper dataHelper = new DataHelper(this); dataHelper.insert("Tom", 20); // 插入一条数据 dataHelper.update(1, "Jerry", 22); // 更新一条数据 dataHelper.delete(1); // 删除一条数据 Cursor cursor = dataHelper.queryAll(); // 查询所有数据 while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("_id")); String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); Log.d("SQLite", "_id=" + id + ", name=" + name + ", age=" + age); } cursor.close(); dataHelper.close(); // 关闭数据库连接 ``` 这样,就可以实现一个简单的 SQLite 数据库增删改查功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ang_qq_252390816

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值