В данной статье рассматриваем возможность подключение к БД с помощью JDBC.
Что такое JDBC
JDBC — это стандарт взаимодействия Java с различными СУБД, входящий в пакет java.sql.
Позволяет использовать один интерфейс для подключения к любым базам данных, для которых созданы JDBC коннекторы.
Пример:
package Database; import java.sql.*; public class DB { private Connection connection; public DB(String driver, String conString, String user, String pass) throws SQLException, ClassNotFoundException { if(this.connection == null) { Class.forName(driver); this.connection = DriverManager.getConnection(conString, user, pass); } } public ResultSet select(String q) throws SQLException { Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery(q); return rs; } public void close() throws SQLException{ if(this.connection!=null) if(!this.connection.isClosed()) this.connection.close(); } }
Здесь реализован конструктор, в котором осуществляется подключение к базе, метод select, выполняющий запрос и возвращающий результат в виде объекта ResultSet, и метод close, закрывающий соединение.
Так же мы избежали обработку исключений в конструкторе с помощью throws SQLException, ClassNotFoundException.
Можно поступить иначе: в блоке try создать подключение, а в блоке catch обработать исключения, выброшенные JDBC.
Я часто использую multicatch, имеющий следующий вид:
catch (SQLException | ClassNotFoundException ex){....}
Чтобы использовать multicatch необходимо в среде разработки поднять уровень языка до 8.
Если используете Maven, подойдет следующая конструкция:
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>Main.Main</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
Здесь говориться о том, что используется Main класс с именем Main, собираться проект будет в единый jar, уровень языка — 8.
Работать с объектом ResultSet можно следующим образом:
while (rs.next()){ rs.getString(1); rs.getString(2); rs.getString(3); } rs.getStatement().close();
То есть считываем значения, пока они не закончатся. С помощью команды rs.getString(1) считываем значение из 1 колонки текущего кортежа в виде текста. Счет колонок начинается с единицы. То же касается с имен столбцов таблицы, считать которые можно так:
for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) { rs.getMetaData().getColumnLabel(i + 1); }
Примеры строк подключения
Oracle
jdbc:oracle:thin:@127.0.0.1:1521/serviceName
Имя драйвера: oracle.jdbc.OracleDriver
MySQL
jdbc:mysql://127.0.0.1:3306/DatabaseName
Имя драйвера: com.mysql.jdbc.Driver
Microsoft Sql Server
jdbc:sqlserver://127.0.0.1:1433;instanceName=DataBaseName
Имя драйвера: com.microsoft.sqlserver.jdbc.SQLServerDriver
Postgree
jdbc:postgresql://127.0.0.1:5432/DatabaseName
Имя драйвера: org.postgresql.Driver