dart-db / sqljocky5

MySQL driver for Dart
Other
40 stars 19 forks source link
connector dartlang database driver mysql mysql-client

SQLJocky5

MySQL client for Dart.

Creating a connection

  var s = ConnectionSettings(
    user: "root",
    password: "dart_jaguar",
    host: "localhost",
    port: 3306,
    db: "example",
  );
  var conn = await MySqlConnection.connect(s);

Closing a connection

  await conn.close();

Execute a query

Results results = await conn.execute('select name, email from users');

Results is an iterable of Row. Columns can be accessed from Row using integer index or by name.

results.forEach((Row row) {
  // Access columns by index
  print('Name: ${row[0]}, email: ${row[1]}');
  // Access columns by name
  print('Name: ${row.name}, email: ${row.email}');
});

Prepared query

await conn.prepared('insert into users (name, email, age) values (?, ?, ?)',
  ['Bob', 'bob@bob.com', 25]);

Insert id

An insert query's results will be empty, but will have an id if there was an auto-increment column in the table:

print("New user's id: ${result.insertId}");

Prepared multiple queries

var results = await query.preparedMulti(
  'insert into users (name, email, age) values (?, ?, ?)',
  [['Bob', 'bob@bob.com', 25],
   ['Bill', 'bill@bill.com', 26],
   ['Joe', 'joe@joe.com', 37]]);

Transactions

Transaction trans = await pool.begin();
try {
  var result1 = await trans.execute('...');
  var result2 = await trans.execute('...');
  await trans.commit();
} catch(e) {
  await trans.rollback();
}

Safe transaction

await pool.transaction((trans) {
  var result1 = await trans.execute('...');
  var result2 = await trans.execute('...');
});

TODO