0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Flutter×MySQLでデータ管理

Last updated at Posted at 2023-08-28

データベース使ってみた

  • これまでローカルファイルでやってたけど、だんだん面倒になってきたからデータベース使うことにした。
  • 何がいいかわかんないけど、MySQL にした(初めて触った笑)。

まだ解決してない問題

下記のコードでやったんだけど、非同期処理がうまくいってない。
※多分 riverpod で管理するなら、loading で処理できると思ってる。

var conn = await MySqlConnection.connect( settings );

出力結果

flutter: connected!!
flutter: 2.1. added
flutter: +------+--------+-------+------------------------------+
flutter: |  id  |  user  |  age  |           email              |
flutter: |2     |Taro    |25     |X.cm                          |
flutter: |0     |banana  |25     |Ta1r@.com                     |
flutter: |1     |yamada  |26     |Ta2r@.com                     |
flutter: |2     |hanako  |28     |Ta3f@.com                     |
flutter: |3     |aaa     |20     |Ta4r@.com                     |

ソース

例によって、コメント書きまくってるから説明なしで。


import 'package:flutter/material.dart';
import 'package:mysql1/mysql1.dart';

// database table
// user
// +-------------------------+
// | id | name | age | email |

void main() async {

  var res;

// 0. MySQL の設定
  var settings = ConnectionSettings(
      host      : "localhost",
      port      : 3306,
      user      : "root",
      password  : "XXXXX",
      db        : "fluttertest",
  );


// 1. MySQL データベースに接続する
  var conn = await MySqlConnection.connect( settings );
  debugPrint( "connected!!" );


// 2. データの追加

// 2.1. 1つ追加
  res = await conn.query( // id を受け取ることもある
    'insert into user(id, name, age, email) values(?, ?, ?, ?);', // 命令文
    [ 2, "Taro", "25", "X.cm" ]                           // ? の引数
  );
  debugPrint( "2.1. added" );

// 2.2. 一括追加
  // リスト形式で一括追加する
  res = await conn.queryMulti( 
    "insert into user (id, name, age, email) values (?, ?, ?, ?);",
    [ 
      [ 0, "banana", 25, "Ta1r@.com" ],
      [ 1, "yamada", 26, "Ta2r@.com" ],
      [ 2, "hanako", 28, "Ta3f@.com" ],
      [ 3, "aaa"   , 20, "Ta4r@.com" ],
    ]
  );


// 3. データベースから取得
  res = await conn.query( "SELECT * FROM user" );
  debugPrint( "+------+--------+-------+------------------------------+" );
  debugPrint( "|  id  |  user  |  age  |           email              |" );
  for ( var r in res ) {
    String id    = r[0].toString().padRight(6);
    String user  = r[1].toString().padRight(8);
    String age   = r[2].toString().padRight(7);
    String email = r[3].toString().padRight(30);
    debugPrint( "|$id|$user|$age|$email|" );
  }

// 4. 接続終了
  await conn.close();

}

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?