Имеется вот такая примерно таблица -
Как написать правильный код с использованием jdbc, который бы подключался к базе и получал данные, а затем они попадали в данную таблицу?
Ответ
1) Для подключения к MSSQL вам поднадобится соответствующий драйвер. В Maven Central его нету, поэтому вам будет нужно самостоятельно добыть внутри каталога установки драйвера:
согласно документации Microsoft
Скачать драйвер можно с сайта Microsoft
(Поясню на всякий случай: installation directory не надо никуда прописывать - это просто путь до драйвера при обычной установке из инсталлятора. Если у вас уже все скачано, достаточно добавить драйвер в CLASSPATH.)
Далее этот драйвер нужно добавить в CLASSPATH любым методом, специфичным для вашего проекта. Например, если вы собираете вручную из консоли, то это будет нечто вроде:
CLASSPATH =.;C:\Program Files\Microsoft JDBC Driver 6.0 for SQL Server\sqljdbc_4.2\enu\sqljdbc42.jar
CLASSPATH =.:/home/usr1/mssqlserverjdbc/Driver/sqljdbc_4.2/enu/sqljdbc42.jar
Если вы используете IntelliJ IDEA, то это делается так:
нужно зайти в настройки проекта (File->Project Structure)
в разделе Modules найти ваш модуль
на вкладке Dependencies в самом низу нажать на плюсик
выбрать "JARs or Directories"
добавить нужную директорию
Если используется Maven, то есть проблема, в Maven Central нету этого артефакта, то есть его придется оформить самостоятельно.
Для серьезных больших проектов, самый правильный способ - поднять собственный репозиторий. На выбор, например, есть Artifactory и Nexus. Как работать с этими инструментами - описывать слишком долго, не влезет в максимальный размер ответа. Скорей всего, у вас не тот случай, но я был обязан предупредить.
Для небольших проектов, можно установить нужный jar в локальный репозиторий Maven. Про это на сайте Maven есть специальная документация. Вкратце, достаточно просто запустить в терминале строчку:
mvn install:install-file -Dfile=<путь до джарки с жрайвером без угловых скобочек> -DgroupId=com.microsoft.sqlserver \
-DartifactId=com.microsoft.sqlserver.jdbc.SQLServerDriver -Dversion=4.2 -Dpackaging=jar
и далее добавить в pom.xml новую зависимость вида:
В общем, добавление новой джарки с сборку проекта очень зависит от характеристик вашего проекта, способов сборки, деплоймента, итп. Тут все каждый решает для себя.
2) Далее у нас есть допустим Entity класс:
public class Customer {
private Integer id;
private String NDOK;
private String SODRAB;
public Customer() {
}
public Customer(Integer id, String NDOK, String SODRAB) {
this.id = id;
this.NDOK = NDOK;
this.SODRAB = SODRAB;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNDOK() {
return NDOK;
}
public void setNDOK(String NDOK) {
this.NDOK = NDOK;
}
public String getSODRAB() {
return SODRAB;
}
public void setSODRAB(String SODRAB) {
this.SODRAB = SODRAB;
}
}
3) Далее создаем managed bean:
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class CustomerBean implements Serializable {
private static final long serialVersionUID = 6081417964063918994L;
public List
Connection connect = null;
//Привел пример, как указать еще и в url, это необязательно
String url = "jdbc:sqlserver://localhost:1433;" +
"databaseName=CustomerDatabase;user=user;password=password";
String username = "user";
String password = "password";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connect = DriverManager.getConnection(url, username, password);
// System.out.println("Connection established"+connect);
} catch (SQLException ex) {
System.out.println("in exec");
System.out.println(ex.getMessage());
}
List
while (rs.next()) {
Customer customer = new Customer();
customer.setId(rs.getInt("id"));
customer.setNDOK(rs.getString("NDOK"));
customer.setSODRAB(rs.getString("SODRAB"));
customers.add(customer);
}
// close resources
rs.close();
pstmt.close();
connect.close();
return customers;
}
}
4) Передаете данные в таблицу способом, описанным в стартовом посте.
5) PROFIT