Страницы

Поиск по вопросам

четверг, 9 апреля 2020 г.

Вывод данных из базы в динамическую таблицу

#java #sql_server #jdbc

                    
Имеется вот такая примерно таблица - 

      
  
  #{msgs.pageTitle}        
                
     
        
           #{msgs.customerIdHeader}
           #{customer.id}
        
        
           #{msgs.NDOKHeader}
           #{customer.NDOK}
        
                     
           #{msgs.SODRABHeader}
           #{customer.SODRAB}
        
     
       


Как написать правильный код с использованием jdbc, который бы подключался к базе
и получал данные, а затем они попадали в данную таблицу?
    


Ответы

Ответ 1



1) Для подключения к MSSQL вам поднадобится соответствующий драйвер. В Maven Central его нету, поэтому вам будет нужно самостоятельно добыть внутри каталога установки драйвера: \sqljdbc_\\sqljdbc.jar \sqljdbc_\\sqljdbc4.jar \sqljdbc_\\sqljdbc41.jar \sqljdbc_\\sqljdbc42.jar согласно документации 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 новую зависимость вида: com.microsoft.sqlserver com.microsoft.sqlserver.jdbc.SQLServerDriver 4.2 В общем, добавление новой джарки с сборку проекта очень зависит от характеристик вашего проекта, способов сборки, деплоймента, итп. Тут все каждый решает для себя. 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 getCustomers() throws ClassNotFoundException, SQLException { 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 customers = new ArrayList(); PreparedStatement pstmt = connect .prepareStatement("select id, NDOK, SODRAB from Customer"); ResultSet rs = pstmt.executeQuery(); 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

Комментариев нет:

Отправить комментарий