Пришлось мне как-то разрабатывать на Java проект, который был завязан на работе с базой данных MySQL. Я нашёл в Сети класс, который удобно работает с SQLite, и переделал его для работы с MySQL, собственно сделать это было нетрудно, дополнительно в этот класс можно добавить несколько методов для удобной работы, но это уже на Ваше пожелание. Собственно, для своих задач эти методы я создавал, а Вам они будут скорее всего не пригодятся, оставлю самые общие лишь.
Добавлены некоторые методы, возвращающие массив объектов из базы данных, переделать можно по своему усмотрению.
Уточняю, этот класс работает с базой данных минуя ORM, т.е. не использует ORM.
package example.Database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class MySQLConnect {
private Connection con = null;
public MySQLConnect() {
//для того, чтобы подключение можно было сделать позже
}
public MySQLConnect(String url, String port, String dbName, String login, String pass) {
setConnection(url, port, dbName, login, pass);
}
public MySQLConnect(String url, String dbName, String login, String pass) {
setConnection(url, "3306", dbName, login, pass);
}
public void setConnection(String url, String port, String dbName, String login, String pass) {
try {
if (port == null) {
port = "3306"; // если порт не указан, то порт по умолчанию
}
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://" + url + ":" + port + "/" + dbName, login, pass);
} catch (ClassNotFoundException ex) {
System.err.println("MySQLdb: Cannot find this db driver classes. Install com.mysql.jdbc driver!");
} catch (SQLException e) {
System.err.println("MySQLdb: Cannot connect to " + dbName);
}
if (con != null) {
System.out.println("Connection to DB established successfully.");
}
}
public Connection getConnection() {
return con;
}
/* метод, выполняющий просмотр базы данных, по сути не нужный,
* т.к возвращает лишь успешно ли выполнена операция, но для
* примера выполнения запроса, оставлю
*/
public boolean executeQuery(String query) {
try {
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
rs.close();
st.close();
return true;
} catch (SQLException e) {
System.err.println("There are problems with the query " + query + " in method "executeQuery"");
e.printStackTrace();
return false;
}
}
public void executeUpdate(String query) { //метод, выполняющий изменения в БД
try {
PreparedStatement statement = con.prepareStatement(query);
statement.executeUpdate();
} catch (SQLException e) {
System.err.println("There are problems with the query " + query + " in method "executeUpdate"");
e.printStackTrace();
}
}
public Object[][] getQueryResultByParam(String query, String idColumnName, String param) {
try {
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
ArrayList idArrayList = new ArrayList();
ArrayList dataArrayList = new ArrayList();
while (rs.next()) {
idArrayList.add(rs.getString(idColumnName));
dataArrayList.add(rs.getString(param));
}
Object[][] result = new Object[2][];
result[0] = idArrayList.toArray();
result[1] = dataArrayList.toArray();
rs.close();
st.close();
return result;
} catch (SQLException e) {
System.err.println("There are problems with the query " + query + " in method "getQueryResultByParam"");
e.printStackTrace();
return null;
}
}
public Object[][] getQueryResultByParam(String query, String param) {
return this.getQueryResultByParam(query, "id", param);
}
public Object[][] getParam(String tableName, String param) {
return this.getQueryResultByParam("SELECT id, " + param + " FROM " + tableName + " WHERE deleted = '0' ORDER BY id", "id", param);
}
}