且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Dart的数据库操作

更新时间:2022-09-16 21:31:24

连接数据库

Dart连接数据库需要先从Pub下载sqljocky包
我新建了一个数据库,内容如下

Dart的数据库操作

连接数据库的代码如下

import 'package:sqljocky/sqljocky.dart';

main(List<String> arguments) {
  //创建一个连接池,host:连接地址,port:端口,user:用户名,password:密码,db:数据库名,max:最大并发数
  var pool = new ConnectionPool(host: 'localhost',port: 3306, user: 'root', password: '123456', db: 'test_mysql', max: 5);
  //执行一条SQL语句
  pool.query("SELECT * FROM users");
}

控制台如果没有报错,那就说明连接成功了

使用下标读取结果

import 'package:sqljocky/sqljocky.dart';

main(List<String> arguments) {
  var pool = new ConnectionPool(host: 'localhost',port: 3306, user: 'root', password: '123456', db: 'test_mysql', max: 5);
  pool.query("SELECT * FROM users").then((results) {
    results.forEach((row) {
      //使用下标查询结果
      print('${row[1]},${row[3]}');
    });
  });
}

执行代码,控制台输出如下

Dart的数据库操作

使用字段读取结果

import 'package:sqljocky/sqljocky.dart';

main(List<String> arguments) {
  var pool = new ConnectionPool(host: 'localhost',port: 3306, user: 'root', password: '123456', db: 'test_mysql', max: 5);
  pool.query("SELECT * FROM users").then((results) {
    results.forEach((row) {
      //使用字段查询结果
      print('${row.name},${row.age}');
    });
  });
}

执行代码,控制台输出如下

Dart的数据库操作

准备SQL语句执行一次

import 'package:sqljocky/sqljocky.dart';

main(List<String> arguments) {
  var pool = new ConnectionPool(host: 'localhost',port: 3306, user: 'root', password: '123456', db: 'test_mysql', max: 5);
  //准备一个SQL语句
  pool.prepare('insert into users (name, age, email) values (?, ?, ?)').then((query) {
    //执行SQL语句
    query.execute(['咖啡', 22, 'kf@qq.com']).then((result) {
      //一个插入语句的结果是空的,但是会有一个自动递增的id
      print("新用户的ID:${result.insertId}");
    });
  });
}

先查看一下控制台的输出

Dart的数据库操作

再看一下数据库

Dart的数据库操作

好了,我们成功插入了一条新数据

准备SQL语句批量执行

import 'package:sqljocky/sqljocky.dart';

main(List<String> arguments) {
  var pool = new ConnectionPool(host: 'localhost',port: 3306, user: 'root', password: '123456', db: 'test_mysql', max: 5);
  pool.prepare('insert into users (name, age, email) values (?, ?, ?)').then((query) {
    //批量执行SQL语句
    query.executeMulti([['绿豆', 18, 'ld@qq.com'],
                        ['红豆', 17, 'hd@qq.com'],
                        ['青豆', 17, 'hd@qq.com']]).then((results) {
      //使用结果列表
      for (var result in results) {
        print("新用户的ID:${result.insertId}");
      }
    });
  });
}

先看看控制台输出

Dart的数据库操作

再看看数据库

Dart的数据库操作

执行一个事务

import 'package:sqljocky/sqljocky.dart';

main(List<String> arguments) {
  var pool = new ConnectionPool(host: 'localhost',port: 3306, user: 'root', password: '123456', db: 'test_mysql', max: 5);
  //创建一个事务
  pool.startTransaction().then((trans) {
    trans.query("DELETE FROM users WHERE id = '6'").then((result) {
      //提交事务
      trans.commit();
    });
  });
}

看看是否成功删除了id为6的用户

Dart的数据库操作