Using MySQL from a MoonBit Agent
The MoonBit SDK already includes the generated package for golem:rdbms/mysql@1.5.0.
Add the Package Import
In the component’s moon.pkg, add an alias for the package:
import {
"golemcloud/golem_sdk/interface/golem/rdbms/mysql" @mysql,
}Open a Connection
let conn = @mysql.DbConnection::open("mysql://user:password@localhost:3306/app")
.or_error!("failed to connect to MySQL")Query Data
MySQL placeholders use ?.
let result = conn.query(
"SELECT ?",
[@mysql.DbValue::Varchar("hello")],
).or_error!("query failed")
let row = result.rows[0]
let value = row.values[0]
let message = match value {
@mysql.DbValue::Varchar(value) => value
@mysql.DbValue::Text(value) => value
@mysql.DbValue::Tinytext(value) => value
@mysql.DbValue::Mediumtext(value) => value
@mysql.DbValue::Longtext(value) => value
@mysql.DbValue::Fixchar(value) => value
_ => abort("unexpected MySQL value")
}Execute Statements
conn.execute(
"INSERT INTO notes (id, body) VALUES (?, ?)",
[@mysql.DbValue::Int(1), @mysql.DbValue::Varchar("hello")],
).or_error!("insert failed")Transactions
let tx = conn.begin_transaction().or_error!("failed to start transaction")
tx.execute(
"UPDATE notes SET body = ? WHERE id = ?",
[@mysql.DbValue::Varchar("updated"), @mysql.DbValue::Int(1)],
).or_error!("update failed")
tx.commit().or_error!("commit failed")Last updated on