This project provides a library to connect, login and execute a query to MySQL.
(1) Load this library with a script tag like the following:
<script type="text/javascript" src="mysql_js_driver_[VERSION_NUMBER].min.js"></script>
(2) Create a client and set an implementation object to communicate with a socket like the following:
var client = new MySQL.Client();
// Socket communication with Chrome Socket API (chrome.sockets.tcp)
client.setSocketImpl(new MySQL.ChromeSocket2());
(3-1) Connect and login to MySQL server
client.login(
"YOUR_MYSQL_HOSTNAME", "YOUR_MYSQL_PORT_NUMBER",
"YOUR_USERNAME", "YOUR_PASSWORD",
function(initialHandshakeRequest, result) {
if (result.isSuccess()) {
var serverVersion = initialHandshakeRequest.serverVersion;
var protocolVersion = initialHandshakeRequest.protocolVersion;
// do something...
} else {
var errorMessage = result.errorMessage;
// do something...
}
}, function(errorCode) { // Error returned from MySQL server
// do something...
}, function(result) { // Cannot connect to MySQL server
// do something...
});
(3-2) Connect and login to MySQL server with SSL
var ca = ...; // CA Certificate string in PEM format
client.loginWithSSL(
"YOUR_MYSQL_HOSTNAME", "YOUR_MYSQL_PORT_NUMBER",
"YOUR_USERNAME", "YOUR_PASSWORD",
ca, true, // true means to check whether CN === host name.
function(initialHandshakeRequest, result) {
if (result.isSuccess()) {
var serverVersion = initialHandshakeRequest.serverVersion;
var protocolVersion = initialHandshakeRequest.protocolVersion;
// do something...
} else {
var errorMessage = result.errorMessage;
// do something...
}
}, function(errorCode) { // Error returned from MySQL server
// do something...
}, function(result) { // Cannot connect to MySQL server
// do something...
});
(4) Execute query (if the result set is returned)
var query = "SELECT * FROM foo WHERE...";
client.query(query, function(columnDefinitions, resultsetRows) {
for (var i = 0; i < columnDefinitions.length; i++) {
var catalog = columnDefinitions[i].catalog;
var schema = columnDefinitions[i].schema
var table = columnDefinitions[i].table;
var orgTable = columnDefinitions[i].orgTable;
var name = columnDefinitions[i].name;
var orgName = columnDefinitions[i].orgName;
// do something...
}
for (i = 0; i < resultsetRows.length; i++) {
var values = resultsetRows[i].values;
for (var j = 0; j < values.length; j++) {
var value = values[j];
// do something...
}
}
}, function(result) {
// Never called.
}, function(result) { // Server returned error.
var errorMessage = result.errorMessage;
// do something...
}, function(result) { // Cannot send query.
// do something...
}
(5) Execute query (if the result set is not returned)
var query = "UPDATE foo SET bar = baz WHERE ...";
client.query(query, function(columnDefinitions, resultsetRows) {
// Never called.
}, function(result) {
var affectedRows = result.affectedRows;
var lastInsertId = result.lastInsertId;
// do something...
}, function(result) { // Server returned error.
var errorMessage = result.errorMessage;
// do something...
}, function(result) { // Cannot send query.
// do something...
}
(6) Logout from MySQL server
client.logout(function(result) {
// do something...
});
$ git clone https://github.com/yoichiro/mysql_js_driver
$ cd mysql_js_driver
$ npm install
$ grunt