CP363 : Connecting to MySQL - Java and VBA
Connecting to SQL with Java
File: dcris.properties
# DCRIS database. database=dcris host=rsbohr.wlu.ca driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://bohr.wlu.ca/dcris user=dcris password=dcris
The connection URL consists of the protocol//[hosts][/database][?properties].
In the above case the protocol is:
jdbc:mysql:
Java's DriverManager class manages the establishment of connections. Every different type of database has its own driver manager.
MySQL example:
// Do not import com.mysql.cj.jdbc.*, register it with a DriverManager
private final Properties dbProperties = new Properties();
private Connection conn = null;
private ResultSetMetaData metaData = null;
private ResultSet resultSet = null;
private String dbDriver = null;
private String dbURL = null;
private String errorString = null;
// Read the properties file.
final InputStream is = this.getClass().getResourceAsStream("dcris.properties");
this.dbProperties.load(is);
this.dbDriver = this.dbProperties.getProperty("driver");
this.dbURL = this.dbProperties.getProperty("url");
// OR: Get the user and login from somwhere external and add them to the properties
this.dbProperties.setProperty("user", user);
this.dbProperties.setProperty("password", password);
// Register the driver
Class.forName(this.dbDriver).newInstance();
// Make a connection
this.conn = DriverManager.getConnection(this.dbURL, this.dbProperties);
String statement = "SELECT * FROM keyword WHERE keyword_id = ?";
PreparedStatement pstmt = this.conn.prepareStatement(statement);
// Set the first parameter value - set*Type*(index, value of correct type)
pstmt.setInt(1, 17);
this.resultSet = pstmt.executeQuery();
this.metaData = pstmt.getMetaData();
// Process the result set and meta data (if desired)
public static void displayData(final ResultSetMetaData metaData,
final ResultSet rs) {
try {
while (rs.next()) {
for (int i = 1; i <= metaData.getColumnCount(); i++) {
final String column = metaData.getColumnLabel(i);
System.out.print(rs.getString(column) + "\t");
}
System.out.println();
}
} catch (final SQLException e) {
System.err.println(e.toString());
}
}
For Oracle:
DriverManager - oracle.jdbc.driver.OracleDriver protocol - jdbc:oracle:thin:
Connecting to SQL with VBA
Set conn = New ADODB.Connection
conn.Open "DRIVER={MySQL ODBC 8.0 Unicode Driver}" _
& ";SERVER=rsbohr.wlu.ca" _
& ";DATABASE=dcris" _
& ";UID=dcris" _
& ";PWD=dcris"
' Reset the other connection objects.
Set cmd = New ADODB.Command
Set pm = New ADODB.Parameter
Set rs = New ADODB.Recordset
With cmd
.ActiveConnection = conn
.CommandText = "SELECT * FROM keyword WHERE keyword_id = ?"
.CommandType = adCmdText
.Prepared = True
.Parameters.Append .CreateParameter("keyword_id", adInteger, adParamInput, 6)
End With
Set startCell = Range("A5")
' Assign the new parameter values
cmd("keyword_id") = 11
Set rs = cmd.Execute
' Copy the data to the spreadsheet
startCell.Offset(1, 0).CopyFromRecordset rs