Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 与Beanshell的JDBC连接_Java_Scripting_Jdbc_Beanshell - Fatal编程技术网

Java 与Beanshell的JDBC连接

Java 与Beanshell的JDBC连接,java,scripting,jdbc,beanshell,Java,Scripting,Jdbc,Beanshell,关于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 ); /

关于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)
该公司说它应该存在。

多亏了,这就是答案:

// 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();
 }
根据文档,您可以自由选择
getClass(name)
BshClassManager.classForName(name)
加载驱动程序。另请注意
//等效的
注释


可能文档只是给出了一个错误的示例,说明如何正确使用
BshClassManager
。但因为它只是一个“等价物”,所以你可以把它完全去掉。
getClass()
应该可以正常工作。

BshClassManager是一个类名,您喜欢使用的方法是实例方法,而不是静态方法。@Jochen:但是文档告诉我们:
getClass()
应该足够了。Djangofan:如果你只是删除了那句冒犯的话会怎么样?@BalusC-好的,删除脚本中的最后一行确实有效。为什么文件上没有提到这一点?我不知道。也许是文档中的错误?不管怎样,我重新发布了这个评论作为答案。好吧,这似乎意味着BshClassManager默认绑定到“默认”类加载器,因为它们被认为是“等价的”?如果BshClassManager是一个“自定义”类加载器(而不是默认的类加载器),这是我之前所想的,那么它们就不是等价的了?