To connect Java application with the MySQL database, we need to follow 5 following steps.
In this example we are using MySql as the database. So we need to know following informations for the mysql database:
- Driver class: The driver class for the mysql database is com.mysql.jdbc.Driver.
- Connection URL: The connection URL for the mysql database is jdbc:mysql://localhost:3306/sonoo where jdbc is the API, mysql is the database, localhost is the server name on which mysql is running, we may also use IP address, 3306 is the port number and sonoo is the database name. We may use any database, in such case, we need to replace the sonoo with our database name.
- Username: The default username for the mysql database is root.
- Password: It is the password given by the user at the time of installing the mysql database. In this example, we are going to use root as the password.
Let's first create a table in the mysql database, but before creating table, we need to create database first.
Example to Connect Java Application with mysql database
In this example, sonoo is the database name, root is the username and password both.
The above example will fetch all the records of emp table.
To connect java application with the mysql database, mysqlconnector.jar file is required to be loaded.
Two ways to load the jar file:
- Paste the mysqlconnector.jar file in jre/lib/ext folder
- Set classpath
1] Paste the mysqlconnector.jar file in JRE/lib/ext folder:
Download the mysqlconnector.jar file. Go to jre/lib/ext folder and paste the jar file here.
2] Set classpath:
There are two ways to set the classpath:
- temporary
- permanent
How to set the temporary classpath
open command prompt and write:
How to set the permanent classpath
Go to environment variable then click on new tab. In variable name write classpath and in variable value paste the path to the mysqlconnector.jar file by appending mysqlconnector.jar;.; as C:\folder\mysql-connector-java-5.0.8-bin.jar;.;
Initialize database constants
Create constant properties database username, password, URL and drivers, polling limit etc.
// init database constants
// com.mysql.jdbc.Driver
private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
private static final String MAX_POOL = "250"; // set your own limit
Initialize Connection and Properties
Once the connection is established, it is better to store for reuse purpose.
// init connection object
private Connection connection;
// init properties object
private Properties properties;
Create Properties
The properties object hold the connection information, check if it is already set.
// create properties
private Properties getProperties[] {
if [properties == null] {
properties = new Properties[];
properties.setProperty["user", USERNAME];
properties.setProperty["password", PASSWORD];
properties.setProperty["MaxPooledStatements", MAX_POOL];
}
return properties;
}
Connect the Database
Now connect to database using the constants and properties initialized.
// connect database
public Connection connect[] {
if [connection == null] {
try {
Class.forName[DATABASE_DRIVER];
connection = DriverManager.getConnection[DATABASE_URL, getProperties[]];
} catch [ClassNotFoundException | SQLException e] {
// Java 7+
e.printStackTrace[];
}
}
return connection;
}
Disconnect the database
Once you are done with database operations, just close the connection.
// disconnect database
public void disconnect[] {
if [connection != null] {
try {
connection.close[];
connection = null;
} catch [SQLException e] {
e.printStackTrace[];
}
}
}
Everything together
Use this class MysqlConnect
directly after changing database_name, username and password etc.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class MysqlConnect {
// init database constants
private static final String DATABASE_DRIVER = "com.mysql.cj.jdbc.Driver";
private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name";
private static final String USERNAME = "root";
private static final String PASSWORD = "";
private static final String MAX_POOL = "250";
// init connection object
private Connection connection;
// init properties object
private Properties properties;
// create properties
private Properties getProperties[] {
if [properties == null] {
properties = new Properties[];
properties.setProperty["user", USERNAME];
properties.setProperty["password", PASSWORD];
properties.setProperty["MaxPooledStatements", MAX_POOL];
}
return properties;
}
// connect database
public Connection connect[] {
if [connection == null] {
try {
Class.forName[DATABASE_DRIVER];
connection = DriverManager.getConnection[DATABASE_URL, getProperties[]];
} catch [ClassNotFoundException | SQLException e] {
e.printStackTrace[];
}
}
return connection;
}
// disconnect database
public void disconnect[] {
if [connection != null] {
try {
connection.close[];
connection = null;
} catch [SQLException e] {
e.printStackTrace[];
}
}
}
}
How to Use?
Initialize the database class.
// !_ note _! this is just init
// it will not create a connection
MysqlConnect mysqlConnect = new MysqlConnect[];
Somewhere else in your code ...
String sql = "SELECT * FROM `stackoverflow`";
try {
PreparedStatement statement = mysqlConnect.connect[].prepareStatement[sql];
... go on ...
... go on ...
... DONE ....
} catch [SQLException e] {
e.printStackTrace[];
} finally {
mysqlConnect.disconnect[];
}
This is all :] If anything to improve edit it! Hope this is helpful.