Страница 1 из 4

Подключение с использованием JDBC драйвера

Добавлено: 03 окт 2012, 17:49
Golland
Здравствуйте, подскажите пож., как подключить уже созданный JDBC коннект к конкретному отчету. Примеры в sample2 все пересмотрел и по своим возможностям разобрал(проект webfx), но явного использования не нашел(myloaddataactoin.java описывает только подключение)
В tegs.jsp прописал
<li><stiviewerfx:link text="My first Report" report="MyFirstReport.mrt" /></li>, но каким образом к этому отчету подключить connect jdbc так и не понял.

Re: Подключение с использованием JDBC драйвера

Добавлено: 04 окт 2012, 11:55
HighAley
Здравствуйте.

Для подключения своего класса загрузки необходимо его подключить в классе ApplicationInitializer следующим образом

Код: Выделить всё

StiConfig stiConfig = new StiConfig(stiDir);
stiConfig.setLoadDataClass(MyLoadDataAction.class);
За получения JDBC соединение отвечает метод

Код: Выделить всё

protected Connection getConnection()
Вам надо его переопределить и использовать согласно вашей задачи. Вы можете использовать ключ для переопределения строку подключения как в примере needOverride или DataSourceName. В примере это DataSourceOverride если это не подходит, то сформулируйте более подробно вашу проблему.

Спасибо.

Re: Подключение с использованием JDBC драйвера

Добавлено: 05 окт 2012, 13:00
Golland
В строке stiConfig.setLoadDataClass(MyLoadDataAction.class);
пишет, что такого метода setLoadDataClass нет. Класс com.stimulsoft.StiConfig импортирован.

Я чего-то не понял или же в поставку что-то не вошло?

Зараннее извиняюсь, если вопрос в моей компетенции, но я только начала осваивать jawa.

Re: Подключение с использованием JDBC драйвера

Добавлено: 05 окт 2012, 13:06
Golland
В продолжении вопроса. Разбирая пример в проекте webfx в классе ApplicationInitializer есть использование
.....
StiWebReport.init(stiConfig)
......

но import com.stimulsoft.StiWebReport; не получается из-за отсутствия оного.

Re: Подключение с использованием JDBC драйвера

Добавлено: 05 окт 2012, 13:38
Golland
Отвечу сам на свои вопросы :)
Я скачаивал приобретенный генератор отчетов StimulSoft 27.09.2012, библиотеки в его архиве были датированы 10.04.2012.
Сейчас скачал тот же архив по новой. Библиотеки уже стали намного свежей и больше,- датированы 18.09.2012. Видно не успели админы выложить новые :)

Главное, что теперь указанные ошибки пропали :)

Re: Подключение с использованием JDBC драйвера

Добавлено: 05 окт 2012, 16:26
Golland
Прошу дальнейшей помощи. Все (вроде бы) сделал как написано и в том числе по примеру. Но как в новом отчете на DataBand выбрать DataSource(созданный connect JDBC)? Сейчас в DataSetup отображается только х[Not Assigned].

Re: Подключение с использованием JDBC драйвера

Добавлено: 05 окт 2012, 18:15
Golland
Немного детальней опишу проблему.
1) В класс ApplicationInitializer я добавил
...
File stiDir = new File("C:/Stimulsoft");
StiConfig stiConfig = new StiConfig(stiDir);
stiConfig.setLoadDataClass(Connect_To_DB.class);
...
2) Connect_To_DB.class - это мой класс, в котором я сделал connection JDBC используя JDBC драйвер. Пример был взят с MyLoadDataAction

3) Насколько я правильно понимаю, теперь при создании отчета(в дизайнере) мне нужно определить новое соединение JDBC, в котором в строку соединения добавить примерно такой синтаксис:

jdbc.driver=Имя JDBC драйвера;
jdbc.url=Соединение;
jdbc.username=Имя пользователя;
jdbc.password=Пароль пользователя;

Если так, то что я ни добавлял в jdbc.driver - все равно получал ошибку
Error java.lang.IllegalArgumentException : In connection options {......} not found driver name

Прошу помочь разобраться.

Re: Подключение с использованием JDBC драйвера

Добавлено: 05 окт 2012, 18:48
HighAley
Здравствуйте.

Посмотрите, пожалуйста, наши обучающие видео Quick Start for Reports.Fx http://www.stimulsoft.com/en/videos

Спасибо.

Re: Подключение с использованием JDBC драйвера

Добавлено: 08 окт 2012, 11:08
HighAley
Здравствуйте.

Если вы ходите создавать JDBC Connection, то вам нужно создавать и возвращать его в методе
protected Connection getConnection() вашего класса подключения Connect_To_DB.class
если у вас одно подключени то вы можете воспользоваться приведенным в примере кодом:

Код: Выделить всё

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Properties info = new Properties();
            info.setProperty("user", "test");
            info.setProperty("password", "test");
            String connectionString = "jdbc:sqlserver://localhost\\SQLEXPRESS1:1433;databaseName=mybase;";
            return DriverManager.getConnection(connectionString, info);
где вам нужно указать ваш driver, user, password и connectionString(он же jdbc.url)

Если вы не хотите из java кода его создавать, то вам не нужно создавать свой класс с подключением, вам все эти параметры надо указать в соединении JDBC в формате:

Код: Выделить всё

jdbc.driver=Имя JDBC драйвера;
jdbc.url=Соединение;
jdbc.username=Имя пользователя;
jdbc.password=Пароль пользователя;
и подключение будет автоматическим.

Спасибо.

Re: Подключение с использованием JDBC драйвера

Добавлено: 08 окт 2012, 14:00
Golland
Здравствуйте, я все так и делал, но результат тот же. Вариантов, почему не работает больше не вижу.
Опишу подробно по действиям:
ВАРИАНТ 1.
1) ОС Windows 7, локальный сервер Tom Cat 7.* , среда разработки Eclipse EE Helios, java sdk 1.6.035
2) Запустил локально пример web fx, затем в меню Sample JSP tag, Designer, выбрал link jsp teg designer ,- открылся дизайнер отчета.
3) Затем в Dictionary, New connection выбрал jdbc Connection, в connection string прописал напрямую

jdbc.driver=rssbus.jdbc.salesforce;
jdbc.url=jdbc:salesforce:User=********;Password=*********;Access Token=********;

Пробовал и отдельно выводить все паратмеры соединения, результат один
In connection options ......not found 'driver name'

Драйвер rssbus.jdbc.salesforce.jar подключен вместе в lib вместе с библиотеками ReportsFx


ВАРИАНТ 2.
При использовании метода protected Connection getConnection() сделано следующим образом:

public class Connect_To_DB extends LoadDataAction {
protected Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("rssbus.jdbc.salesforce.SalesforceDriver");
String connectionString = "jdbc:salesforce:User=*****;Password=*****;Access Token=******;";
return DriverManager.getConnection(connectionString);
}
}


И в ApplicationInitializer добавлено

public class ApplicationInitializer implements ServletContextListener {
public void contextInitialized(final ServletContextEvent event) {
try {
File stiDir = new File("C:/Stimulsoft");
StiConfig stiConfig = new StiConfig(stiDir);
stiConfig.setLoadDataClass(Connect_To_DB .class);
StiWebReport.init(stiConfig);
}
}


Правда в последнем варианте, не ясно как это должно быть использовано в New connection...

Прошу помощи, если проблема в моей компетенции, готов окупить Ваше время всеми приемлемыми способами.