【问题标题】:How to run JDBC code from terminal?如何从终端运行 JDBC 代码?
【发布时间】:2013-04-14 23:39:28
【问题描述】:

我已经使用-cp <mysql-connector-java jar file> 编译了我的代码。编译过程中没有错误。所有类文件都已创建

为了运行代码,我转到更高的一个目录并执行java packagename.MyPgm
但是,当我运行这是弹出的错误:

行号错误:-1
java.sql.SQLException:找不到适合 jdbc 的驱动程序:mysql://localhost/feedback?user=root&password=passwd
    在 java.sql.DriverManager.getConnection(DriverManager.java:640)
    在 java.sql.DriverManager.getConnection(DriverManager.java:222)
    在 javaapplication2.HttpHeaderParser.main(HttpHeaderParser.java:69)


导入 com.mysql.jdbc.Connection;
导入com.mysql.jdbc.PreparedStatement;
导入com.mysql.jdbc.Statement;
导入 java.io.*;
导入java.sql.DriverManager;
导入 java.sql.SQLException;
导入java.util.ArrayList;

公共类 HttpHeaderParser {

static Connection connect = null;
static Statement statement = null;
public static void main(String[] args) throws IOException {
    try {
        BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("http_headers.txt")));   
        FirstLine firstObj = null;
        SecondLine secondObj;
        OtherFields otherObj;
        connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/feedback?"+"user=root&password=sicily");  //this will connect to the database
        statement = (Statement) connect.createStatement();

我这里有一些 java 字符串操作。然后是 catch 语句。

catch (Exception e) {
        System.out.println("Error in line no: "+lineCount);                 //displays the line number of the input file where the program stopped
        e.printStackTrace();
    }

【问题讨论】:

  • 程序语法正确。问题出现在运行时。 DriverManager 在运行时无法获取或找到实例。
  • 这是您获得的完整堆栈跟踪吗?
  • 是的,这就是我所得到的。
  • 通过包含您使用的代码来编辑您的问题。
  • 你去。请看一看。

标签: java mysql linux jdbc terminal


【解决方案1】:

你需要一个类似的文件 "mysql-connector-java-5.1.17-bin.jar" 在您的classpath 中,以及在您的程序中对它的适当引用

看来您正在替换 classpath 以仅引用一个文件, 您可能至少需要“。”也。

【讨论】:

  • 如果您提到的 jar 文件不存在,则会生成 ClassNotFound 的编译时错误。
  • 我有这个相同的 jar 文件。并在编译中使用它。编译过程中没有错误。
  • @DhruvaJain 在编译期间通常不需要特定 JDBC 驱动程序的类,但在运行时确实需要它。
  • @Maximin OP 并没有抱怨编译,而是运行时。我在回答关于运行时的问题。
【解决方案2】:

您仍然需要使用类路径参数运行代码。

应该是这样的:

java packagename.MyPgm -cp <mysql-connector-java jar file>

试试看吧/

编辑:

应该在创建连接之前添加此行。

样本:

Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
conn = DriverManager.getConnection("jdbc:mysql://hostname:port/dbname","username",  "password");
conn.close();

编辑 2:

只修复部分代码:

OtherFields otherObj;
Class.forName("com.mysql.jdbc.Driver");
connect = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/feedback?"+"user=root&password=sicily");  //this will connect to the database
statement = (Statement) connect.createStatement();

完成后,编译,

javac HttpHeaderParser.java -cp <mysql jar file>

编译成功后,同样需要运行。

java HttpHeaderParser -cp <mysql jar file>

但请记住,您编写 JDBC 代码的位置看起来并不正确。

【讨论】:

  • java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:321) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 在 java.lang .ClassLoader.loadClass(ClassLoader.java:266) 在 java.lang.Class.forName0(Native Method) 在 java.lang.Class.forName(Class.java:186) 在 javaapplication2.HttpHeaderParser.main(HttpHeaderParser.java:69 )
  • HttpHeaderParser 是我的主要 java 程序。这是新出现的一堆错误。我刚刚添加了您建议的 4 行中的第一行。剩下的三个已经在那里了。
  • 现在按照我的回答中的建议使用 -cp 参数运行。
  • 我跑了 -cp 争论,这个错误仍然存​​在。我已将我的代码包含在问题中。请看一看。
猜你喜欢
  • 2012-09-04
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 2018-07-09
  • 2021-02-09
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
相关资源
最近更新 更多