JSBC-соединение Beanshell, загрузка классов - PullRequest
1 голос
/ 30 сентября 2010

Я хочу подключиться к hsqldb в скрипте BeanShell.

У меня были проблемы при загрузке класса, я написал это раньше, и на него был получен ответ.

код выглядит так:

    Connection conn = null;

    try {
            getClass("org.hsqldb.jdbcDriver").newInstance();
            conn =  DriverManager.getConnection("jdbc:hsqldb:file:C:/testdata/tdb","SA","");
            System.out.println("Connection established");
    }

и я получаю эту ошибку:

java.sql.SQLException: No suitable driver found for jdbc:hsqldb:file:C:/testdata/tdb

, и я тоже пытался зарегистрировать драйвер, но у меня ничего не вышло

DriverManager.register(getClass("org.hsqldb.jdbcDriver").newInstance())

этот код уже работает вJava (вместо getClass () с использованием Class.forName ()), что больше нужно beanhell для работы с этим кодом?

Спасибо, Билал

1 Ответ

1 голос
/ 26 августа 2011

Я отказался от этого, не было никакого способа динамически загружать классы JDBC в отличие от других типов объектов, и вместо этого я теперь использую Runtime exec для вызова программы командной строки для БД. Также в бобовой оболочке есть метод exec ().

К счастью, все, что мне было нужно, - это запускать сценарии для БД, а не взаимодействовать с БД, и это работает для меня.

Кроме того, причина того, что JDBC не загружается для вас, заключается в том, что Beanshell иногда загружает свой собственный загрузчик классов (вместо загрузчика классов по умолчанию). Это происходит, особенно если вы пытаетесь динамически загружать jar-файлы внутри скрипта Beanshell. Если вы поместите свой jdbc.jar в каталог Javasoft / ext, в этом случае я считаю, что он попадет в загрузчик классов по умолчанию. Кроме того, если ваш скрипт Beanshell достаточно осторожен , чтобы не запускать новый загрузчик классов , это также может сработать. Другими словами, не вызывайте addClassPath в вашем скрипте, между прочим.

...