为什么dart中的mysql1查询没有返回任何结果?

thtygnil  于 2023-04-19  发布在  Mysql
关注(0)|答案(2)|浏览(116)

我最近开始开发一个flutter/dart项目,获得一些基本的页面设置和导航。
我有一个MySQL数据库,我想合并,我发现mysql 1包来帮助我做到这一点。我已经导入了包,并使用的例子发现here
我遇到的问题是,我似乎看不到数据库中的任何数据。
在我的主. dart 我有这个:

import 'dart:async';
 import 'package:mysql1/mysql1.dart';

 Future main() async {
   // Open a connection (testdb should already exist)
   final connection = await MySqlConnection.connect(new ConnectionSettings(
     host: '10.0.2.2',
     port: 3306,
     user: 'root',
     password: 'gDrP^6W42f9Z',
     db: 'EntomologyApp',
   ));

   var results = await connection.query('select * from Account'); // expected results
   print(results);

   // Finally, close the connection
   await connection.close();
 }

在尝试了这么多不同的方法,但没有找到任何真实的的解决方案后,我不知道下一步该怎么做。
在这里,我希望与MySQL DB建立连接,并通过connection.query select语句访问数据。然后我希望它打印出结果,以便我可以澄清有结果。
当我在SQL工作台中运行完全相同的查询时,我得到的是我为测试而插入的虚拟数据的结果,但在这里,我在控制台中得到的只是'()',我假设这只是一个空的潜在记录列表。
现在,我知道这看起来像是一个连接问题,但是如果我把这行代码放在其他查询代码之上:

await connection.query(
       'CREATE TABLE users (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(255), email varchar(255), age int)');

它工作并在workbench中创建了一个'users'表,然后每当我运行之后,它都会说一个名为'users'的表已经存在。我这里有这个代码只是为了测试表创建工作。我想访问'Account'表中的数据,其中现在有很多记录。
编辑:我现在已经测试了插入一条记录:await connection.query('insert into Account (email, password) values ("bob@bob.com", "password123")');
并且它成功地在Account表中创建了一条记录,所以creation语句似乎可以工作,但select不行。

iovurdzv

iovurdzv1#

显然,您必须更改ConnectionSettings和表名以适应您的设置,但以下代码对我来说很有效:

import 'package:mysql1/mysql1.dart';

Future main(List<String> arguments) async {
  MySqlConnection? con;
  try {
    con = await MySqlConnection.connect(ConnectionSettings(
      host: "localhost",
      port: 3306,
      db: "world",
      user: "root",
      password: null,
      characterSet: CharacterSet.UTF8MB4,
    ));

    Results results = await con.query("SELECT * FROM categories");
    print(results);
  } catch (e) {
    print(e);
  } finally {
    if (con != null) await con.close();
  }
}
am46iovg

am46iovg2#

我没有这个问题的答案或解决方案,在这篇文章的故障排除过程中,我使用了http package,并遵循了CodingCafe on YouTube的一个非常有见地的直接教程系列,它帮助我现在与我的Flutter Dart项目和我的后端SQL数据库建立了可靠的连接,我现在已经迁移到XAMPP服务器。
任何努力使用mysql1的人,我推荐http,因为它在使用json有效负载时似乎更灵活。
谢谢你的帮助

相关问题