Соединение JDBC с Beanshell - PullRequest
       22

Соединение JDBC с Beanshell

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

Другие подобные вопросы о StackOverflow не ответили на мой вопрос в этой области. У меня есть этот скрипт, который не работает, и мне интересно, как заставить его работать:

// beanshell script script.bsh
import com.mysql.jdbc.Driver; 
import java.sql.Connection;  
name="com.mysql.jdbc.Driver"; 
c = getClass( name ); 
c = BshClassManager.classForName( name );  // equivalent 

И ошибка, которую я получаю:

// Debug: getResolvedMethod cache MISS: class bsh.BshClassManager - classForName
// Debug: Searching for method: classForName( java.lang.String ) in 'bsh.BshClassManager'
// Debug: Looking for most specific method: classForName
bsh.UtilEvalError: Cannot reach instance method: classForName( java.lang.String ) from static context: bsh.BshClassManager
        at bsh.Reflect.checkFoundStaticMethod(Unknown Source)
        at bsh.Reflect.resolveJavaMethod(Unknown Source)
        at bsh.Reflect.resolveExpectedJavaMethod(Unknown Source)
        at bsh.Reflect.invokeStaticMethod(Unknown Source)
        at bsh.Name.invokeMethod(Unknown Source)
        at bsh.BSHMethodInvocation.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHPrimaryExpression.eval(Unknown Source)
        at bsh.BSHAssignment.eval(Unknown Source)
        at bsh.Interpreter.eval(Unknown Source)
        at bsh.Interpreter.source(Unknown Source)
        at bsh.Interpreter.main(Unknown Source)

Документация говорит, что она должна существовать.

Ответы [ 2 ]

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

Благодаря BalusC , это был ответ:

// debug();
// addClassPath("mysql-connector-java-5.1.15.jar"); 
import com.mysql.jdbc.Driver; 
import java.sql.Connection;  
import java.sql.DriverManager; 

System.out.println("MySQL Connect Example.");
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String dbName = "mydb";
String driver = "com.mysql.jdbc.Driver";
String userName = "root"; 
String password = "password";
try {
    c = getClass( driver ); 
    conn = DriverManager.getConnection(url+dbName,userName,password);
    System.out.println("Connected to the database");
    conn.close();
    System.out.println("Disconnected from database");
 } catch (Exception e) {
  e.printStackTrace();
 }
0 голосов
/ 19 августа 2011

Согласно документации http://beanshell.org/manual/classpath.html#Loading_Classes_Explicitly вы можете выбрать getClass( name ) или BshClassManager.classForName( name ) для загрузки драйвера.Обратите внимание также на комментарий // equivalent.

Возможно, документация просто дала неправильный пример того, как правильно использовать BshClassManager.Но так как это всего лишь «эквивалент», вы можете полностью его удалить.getClass() должен работать просто отлично.

...