Android数据库的使用(增删改查,flutter开发

第二步:在Activity文件中初始化辅助类在这里插入图片描述

第三步:创建数据库(第一个button点击事件)在这里插入图片描述

第四步(增删改查,另外四个点击事件);

插入数据–增

在这里插入图片描述

删除数据–删

在这里插入图片描述

更改数据–改

在这里插入图片描述

查询数据–查

在这里插入图片描述

下面是源码

DataBaseHelp如下:


//创建数据库辅助类:创库,创表,更新/升级

public class DataBaseHelp extends SQLiteOpenHelper {

    //数据库名称

    public static final String DB_NAME = "my_database.db";

    //数据库版本

    private static final int DB_VERSION = 1;

    //表名

    public static final String TABLE_NAME = "table_demo";



    /*context:上下文

     *name:要被创建的数据库名称(文件名)

     *factory:游标工厂

     * version:数据库版本

     * */

    public DataBaseHelp(@Nullable Context context) {

        super(context, DB_NAME, null, DB_VERSION);

    }



    //创建表

    @Override

    public void onCreate(SQLiteDatabase db) {

        //用SQL语句来创建表

        String sql = "create table if not exists " + TABLE_NAME + "(_id integer primary key autoincrement,name varchar(20),age integer)";

        //执行语句

        db.execSQL(sql);

        Log.e("sql", "onCreate: " + "表创建成功");

    }



    //用于更新数据库

    @Override

    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        //当当前版本和老版本不一样的时候

        if (newVersion != oldVersion) {



        }

    }

} 

DataBaseActivity如下:


public class DataBaseActivity extends AppCompatActivity {



    private DataBaseHelp helper;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_data_base);

        //初始化辅助类

        helper = new DataBaseHelp(this);

    }



    //创建数据库

    public void btncreate(View view) {

        //getWritableDatabase()打开数据库

        SQLiteDatabase db = helper.getWritableDatabase();

        //当数据库不用时关闭数据库(为了防止博主Demo出错。。。。。)

        db.close();



    }



    //添加数据

    public void btninsert(View view) {

        SQLiteDatabase db = helper.getWritableDatabase();

        //Android为了方便程序员SQL开发,提供了一个贼好的API: ContentValues(添加数据交给它)

        ContentValues values = new ContentValues();

        //放值

        values.put("name", "张三");

        values.put("age", 18);

        db.insert(DataBaseHelp.TABLE_NAME, null, values);

        values.put("name", "李四");

        values.put("age", 19);

        db.insert(DataBaseHelp.TABLE_NAME, null, values);

        values.put("name", "王五");

        values.put("age", 20);

        db.insert(DataBaseHelp.TABLE_NAME, null, values);

        //关闭数据库

        db.close();



    }



    //删除数据

    public void btndelete(View view) {

        SQLiteDatabase db = helper.getWritableDatabase();

        /*table :表名

         * whereClause:满足删除条件 格式:例子: "name=?"

         * whereArgs:满足删除的条件*/

        db.delete(DataBaseHelp.TABLE_NAME, "name=?", new String[]{"张三"});

        //关闭数据库

        db.close();

    }



    //修改数据

    public void btnupdate(View view) {

        SQLiteDatabase db = helper.getWritableDatabase();

        ContentValues values = new ContentValues();

        values.put("name", "BoRe");

        values.put("age", 7);

        /*

         * table:表名

         * values:更新的数据

         * whereClaues:更新条件 格式:例子: "name=?"

         * whereArgs:满足更新的条件*/

        db.update(DataBaseHelp.TABLE_NAME, values, "name=?", new String[]{"李四"});

        //关闭数据库

        db.close();

    }



    //查找数据

    public void btnselect(View view) {

        SQLiteDatabase db = helper.getWritableDatabase();

        /*

         *table :表名

         * colums:被查询的列(字段)

         * selection :查询条件

         * selectionArgs:满足查询条件

         * group:指定分组

         * having:分组筛选数据的关键字

         * orderby:排序*/

        Cursor cursor = db.query(DataBaseHelp.TABLE_NAME, new String[]{"name", "age"}, null, null, null, null, null);

        //数据拿到了,已经在cursor游标中,现在要遍历游标

### 尾声

面试成功其实都是必然发生的事情,因为在此之前我做足了充分的准备工作,不单单是纯粹的刷题,更多的还会去刷一些Android核心架构进阶知识点,**比如:JVM、高并发、多线程、缓存、热修复设计、插件化框架解读、组件化框架设计、图片加载框架、网络、设计模式、设计思想与代码质量优化、程序性能优化、开发效率优化、设计模式、负载均衡、算法、数据结构、高级UI晋升、Framework内核解析、Android组件内核等。**
![](https://img-blog.csdnimg.cn/img_convert/ddf0127aff0b55ddad58796d97d1f71e.png)

不仅有学习文档,视频+笔记提高学习效率,还能稳固你的知识,形成良好的系统的知识体系。这里,笔者分享一份从架构哲学的层面来剖析的视频及资料分享给大家梳理了多年的架构经验,筹备近6个月最新录制的,相信这份视频能给你带来不一样的启发、收获。

![](https://img-blog.csdnimg.cn/img_convert/cffb132bb31a00f5e7618cb6cbd9eaff.png)

##### Android进阶学习资料库

一共十个专题,包括了Android进阶所有学习资料,Android进阶视频,Flutter,java基础,kotlin,NDK模块,计算机网络,数据结构与算法,微信小程序,面试题解析,framework源码!

![image](https://img-blog.csdnimg.cn/img_convert/05018f9b86caf912affa35033c59c83f.png)

##### 大厂面试真题

PS:之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

![](https://img-blog.csdnimg.cn/img_convert/9e77312db7ee761f4c3c13b5327b540e.png)

**《2017-2021字节跳动Android面试历年真题解析》**

![](https://img-blog.csdnimg.cn/img_convert/bc01a3914e1494d5fc7d8f58690b35f3.png)

* ##### **[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**

知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中...(img-A0dhCEe4-1630654575284)]

**《2017-2021字节跳动Android面试历年真题解析》**

[外链图片转存中...(img-cfDXYETc-1630654575286)]

* ##### **[CodeChina开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》](https://codechina.csdn.net/m0_60958482/android_p7)**

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Flutter是一种跨平台的移动应用程序开发框架,它提供了使用SQLite数据库的内置支持。 要使用SQLite数据库,您需要使用Flutter的sqlite包。您可以通过在pubspec.yaml文件中添加以下依赖项来获取此包: ```yaml dependencies: sqflite: ^2.0.0+3 ``` 一旦您添加了依赖项并运行了`flutter packages get`,您就可以开始使用SQLite数据库了。以下是如何使用SQLite数据库的一些示例: ### 创建数据库 ```dart import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; final database = openDatabase( join(await getDatabasesPath(), 'my_database.db'), onCreate: (db, version) { return db.execute( 'CREATE TABLE users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)', ); }, version: 1, ); ``` 在这个示例中,我们创建了一个名为`my_database.db`的数据库,并在其中创建了一个名为“users”的表。 ### 插入数据 ```dart await database.insert( 'users', {'id': 1, 'name': 'John', 'age': 30}, ); ``` 在这个示例中,我们向“users”表中插入了一条数据。 ### 查询数据 ```dart final List<Map<String, dynamic>> users = await database.query('users'); ``` 在这个示例中,我们查询了“users”表中的所有数据。 ### 更新数据 ```dart await database.update( 'users', {'age': 31}, where: 'name = ?', whereArgs: ['John'], ); ``` 在这个示例中,我们将“users”表中名为“John”的用户的年龄更新为31岁。 ### 删除数据 ```dart await database.delete( 'users', where: 'name = ?', whereArgs: ['John'], ); ``` 在这个示例中,我们删除了“users”表中名为“John”的用户的记录。 这是使用Flutter和SQLite数据库的一些基本示例。您可以使用这些示例来开始使用SQLite数据库,并根据您的需求进行修改。 ### 回答2: 在Flutter中,可以使用sqflite插件来实现对SQLite数据库增删改查操作。 首先,需要在pubspec.yaml文件中添加sqflite插件的依赖: ``` dependencies: sqflite: ^x.x.x ``` 然后,在需要使用SQLite数据库的地方引入sqflite库: ``` import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; ``` 接下来,创建一个数据库的帮助类,用于管理数据库的创建和版本更新。可以创建一个名为DatabaseHelper的类,并在其内部提供一些静态方法。 ``` class DatabaseHelper { static Future<Database> database() async { String path = join(await getDatabasesPath(), 'database.db'); return await openDatabase(path, version: 1, onCreate: _createTable); } static Future<void> _createTable(Database db, int version) async { await db.execute('CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)'); } } ``` 在这个类中,我们定义了一个数据库方法,该方法通过getDatabasesPath()获取数据库的路径,并将其与数据库名称拼接在一起以获取完整路径。然后,我们通过openDatabase()方法打开数据库,如果数据库不存在,则创建数据库,并在数据库中创建名为users的表。 然后,可以在其他地方使用这个DatabaseHelper类,执行增删改查操作。 ``` class UserRepository { static Future<void> addUser(String name) async { Database db = await DatabaseHelper.database(); await db.insert('users', {'name': name}); } static Future<void> deleteUser(int id) async { Database db = await DatabaseHelper.database(); await db.delete('users', where: 'id = ?', whereArgs: [id]); } static Future<void> updateUser(int id, String name) async { Database db = await DatabaseHelper.database(); await db.update('users', {'name': name}, where: 'id = ?', whereArgs: [id]); } static Future<List<Map<String, dynamic>>> getUsers() async { Database db = await DatabaseHelper.database(); return await db.query('users'); } } ``` 在这个示例中,我们通过addUser()方法向数据库中的users表中插入一条数据,通过deleteUser()方法根据id来删除数据,通过updateUser()方法根据id来更新数据,通过getUsers()方法获取所有的用户数据。 以上就是使用sqflite插件在Flutter使用SQLite数据库实现增删改查的基本步骤。要注意的是,在实际使用中,还需要处理数据库的异常情况和事务处理。 ### 回答3: 使用Flutter操作SQLite数据库的步骤如下: 1. 导入相关依赖:在pubspec.yaml文件中添加sqflite和path两个依赖。 ``` dependencies: flutter: sdk: flutter sqflite: ^2.0.0 path: ^2.0.0 ``` 2. 创建数据库:在Flutter中,可以使用openDatabase函数创建一个SQLite数据库。 ```dart import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart'; final String tableName = 'person'; // 表名 Future<Database> database() async { return openDatabase( join(await getDatabasesPath(), 'database.db'), // 数据库名 onCreate: (db, version) { return db.execute( 'CREATE TABLE $tableName(id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)', ); // 创建表 }, version: 1, // 数据库版本号 ); } ``` 3. 插入数据:使用insert函数将数据插入到数据库中。 ```dart Future<void> insertPerson(Person person) async { final db = await database(); await db.insert( tableName, person.toMap(), conflictAlgorithm: ConflictAlgorithm.replace, // 冲突处理策略 ); } ``` 4. 查询数据:使用query函数从数据库中查询数据。 ```dart Future<List<Map<String, dynamic>>> queryAllPersons() async { final db = await database(); return db.query(tableName); } ``` 5. 更新数据:使用update函数更新数据库中的数据。 ```dart Future<void> updatePerson(Person person) async { final db = await database(); await db.update( tableName, person.toMap(), where: 'id = ?', whereArgs: [person.id], // 条件参数,保证更新正确的记录 ); } ``` 6. 删除数据:使用delete函数删除数据库中的数据。 ```dart Future<void> deletePerson(int id) async { final db = await database(); await db.delete( tableName, where: 'id = ?', whereArgs: [id], // 条件参数,保证删除正确的记录 ); } ``` 以上就是在Flutter使用SQLite数据库实现增删改查的基本步骤。有了这些操作,你可以方便地处理数据库数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值