mysqldart

Why won't my mysql1 queries in dart return any results?


I have recently started developing a flutter/dart project getting some basic pages set up and navigation.

I have a MySQL database that I would like to incorporate and I found the mysql1 package to help me do this. I've imported the package and used the examples found here.

The problem I'm having is that I can't seem to see any of the data in the db.

in my Main.dart I have this:

 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();
 }

After trying so many different approaches and not reaching any real solution I don't know what to try next.

Here, I expect a connection to made to MySQL DB and the data to be accessed through the connection.query select statement. I then expect it to print out the results just so I can clarify there is results.

When I run the exact same query in SQL workbench, I get results of dummy data I have inserted for testing but here all I get in the console is '()' which I would assume is just an empty list of potential records.

Now, I know it may seem like there's a connection issue, but if I put this line of code in just above the other query code:

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

it works and creates a 'users' table in workbench, then any time I run after, it will say a table already exists called 'users'. I have this code here just to test that table creation works. I want to access the data in the 'Account' table however, of which there are plenty of records now.

EDIT: I have now tested inserting a single record with: await connection.query('insert into Account (email, password) values ("bob@bob.com", "password123")');

and it successfully creates a record in the Account table, so creation statements seem to work but select doesn't.


Solution

  • I do not have an answer or solution to this problem, during the troubleshooting of this post I played around with using the http package and followed a very insightful straight forward tutorial series by the CodingCafe on YouTube which has helped me now create a reliable connection with my Flutter Dart project and my backend SQL database which I've now migrated to a XAMPP server.

    Anyone struggling to work with mysql1, I would recommend http as it does seem more flexible to use when working with json payloads.

    Thank you for the help