LoginSignup
1
0

More than 1 year has passed since last update.

初心者 MySQL8に挑戦する 8

Last updated at Posted at 2022-07-19

教師データの足りてないAI

 MySQL寝てる問題を乗り越え、再びFlutterでの本題に戻る。つまりこれ。

 なんせ2fileしかない、ビデオ6分しかない。速攻写経。もちろん繋ぐデータベースが違うので、その辺は少し書き直す。

  • 元・ボタンを押したら社員ID10番の人のメールアドレスを取ってきて表示。
  • 新・ボタンを押したら845年に起こった事件名を取ってきて表示。

 て、変えたのはこれだけ。Androidstudioには赤も黄色もない。ちゃんとUIもあるからsimulator起動して、ビルド。画面出た。さあ、ボタンを押してみよう。

 ・・・変化なし(>_<)

さあ困った。エラーが出るのは辛いが、それでも、エラーだとわかる。検索もできる。が、ビルドは通っていて、ボタンも生きていて、consoleにはconnectedと表示されているけど、見本でメールアドレスが表示されるところに、・・・・なにも出ない。

 試しにSequelAceを見てみる。「クエリの状態:エラーはありませんでした」と書かれているだけで、だれかに接続されたぞとか、変なこと頼まれたぞ、とか、機嫌を損ねているようでもない。

 ともかく今回も、接続はできた(connectedって表示されたからね)らしい。前回の公式サンプルでも、繋いでテーブルを作るところまではできてた。前回は新しいデータを挿入できずに、エラー文がいっぱい出たところで放置。今回は「取ってきて表示」ができない。公式サンプルでは挿入の後になる「取ってきて表示」と見比べて、ぜんぜん同じことをしてる気分のしないコードを見比べる。あ、似てるところもあるか。

これが公式。

  // Query the database using a parameterized query
  var results = await conn.query(
      'select name, email, age from users where id = ?', [result.insertId]);
  for (var row in results) {
    print('Name: ${row[0]}, email: ${row[1]} age: ${row[2]}');
  }

こっちが今日のビデオのGitHub。Flutterサンプルのカウンターアプリで、「ボタン押したらインクリメント」を「ボタン押したらクエリ」に変えてあるだけらしい。

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
  var db = new Mysql();
  var mail = '';

  void _getCustomer() {
    db.getConnection().then((conn) {
      String sql = 'select mail from company.customer where id = 10;';
      conn.query(sql).then((results) {
        for(var row in results){
          setState(() {
            mail = row[0];
          });
        }
      });
      conn.close();
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'mail:',
            ),
            Text(
              '$mail',
              style: Theme.of(context).textTheme.display1,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _getCustomer,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ),
    );
  }
}

 基礎力のない私には、このたった二つのサンプルから正解を見つけることはできない。ので、教師データ三つ目、明日は間にphpが挟まってるヤツに挑戦しよう。
 

1
0
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
1
0