mysqlxpcom 
| resources: | Home Feedback Installation Downloads Source Code Documentation Screenshots |
|---|
Brief Guide to MySQLXPCOM
Brief Guide to MySQLXPCOM
by Moss Collum <moss ATSIGN hamparts com>Contents
Overview
Exceedingly brief introduction to MySQLXPCOM: first initialize the MySQL component, then create a Connection object, then call the appropriate methods on it. Everything's listed here in more or less the order you'll use it. I've also put together a simplified interface, SimpleMySQLConnection. It's a relatively quick hack, and hasn't been thoroughly tested, so I make no promises about performance or reliability. But it's been working well for me, and it does take care of some of the overhead of creating a connection.MySQLComponent
To initialize the MySQLXPCOM component, use:
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var mysql = Components.classes["@mozilla.org/mysql;1"].createInstance();
mysql = mysql.QueryInterface(Components.interfaces.nsIMySQL);
Once this is done, you can create a Connection object
Connection
mysqlRun = mysql.Connection(host, port, database, user, password);
- mysqlRun
- Variable that will hold the new Connection object.
- mysql
- An existing MySQL component.
- host
- The hostname of the MySQL server.
- port
- The port number of the MySQL server.
- user
- The username to log on with.
- password
- The password for the given username.
Execute
Execute a MySQL statement. If it is a query, the results will be available through the same Connection object.mysqlRun.Execute(sqlcommand, type);
- mysqlRun
- An existing Connection object.
- sqlcommand
- Text of a MySQL command to execute.
- type
- Set to 1 if you want to use the NumRows method.
When type is set to 1 mysqlxpcom will use mysql_store_result() call.
It will store all returned records in the client memory. In case of huge number of returned records you may prefer to set type to zero.
When type is set to 0 mysqlxpcom will use mysql_use_result() call. It will leave records in the server memory, so client must fetch records one by one. Only after that client may call NumRows method
See MySQL C API for benefits and drawbacks of each method.
FetchFields
Appears to do the same thing as the FetchFieldNames method, but with different syntax. So far, I haven't worked out the details of this one--I just use FetchFieldNames instead.FetchFieldNames
Fetch the names of the fields in the result set for the current query.
var fieldNamesCnt = {value: 0};
var fieldNames = {value: []};
mysqlRun.FetchFieldNames(fieldNamesCnt, fieldNames);
- mysqlRun
- An open Connection object.
- fieldNamesCnt.value
- After method is called, contains the number of fields in the result set.
- fieldNames.value
- After method is called, contains an array of field names.
NumRows
Return the number of rows in the current result set.rows = mysqlRun.NumRows();
- mysqlRun
- An open Connection object.
- rows
- Gets set to the number of rows in the response to the most recent query.
FetchRow
Fetch a new row of results from the current query.
var rowDataCnt = {value: 0};
var rowData = {value: []};
mysqlRun.FetchRow(rowDataCnt, rowData);
- mysqlRun
- An open Connection object.
- rowDataCnt.value
- After method is called, contains the number of columns in the row.
- rowData.value
- After method is called, contains an array of field names.
Finish
Closes the connection to the database.rows = mysqlRun.Finish();
- mysqlRun
- An open Connection object.