0

したがって、以下のコードは Eclipse では機能しますが、CL では機能しません。JDBCコネクタに関係していると思いますが、よくわかりません。エラーは発生しませんが、実行されません。たとえば、「EDF」も印刷されません。助言がありますか?

    //Connection conn = null;
    String url = "jdbc:mysql://localhost/";
    String db = "db";
    String driver = "com.mysql.jdbc.Driver";
    String table = "order_queue";
    Connection conn = null;

    // Upload trade data to order_queue table
    try {
        Class.forName(driver);
        System.out.print("EDF");
        try {
            conn = DriverManager.getConnection(url+db,"root","");
            Statement st = conn.createStatement();
            String sql = "INSERT INTO " + table + " (name) VALUES("APPLE");
            st.executeUpdate(sql);
            conn.close();

        } catch (SQLException s) {
            s.printStackTrace();
            orderMessage = "ERROR: Problem executing order.  Please try again!";
        }
    } catch (ClassNotFoundException cnfe){
        orderMessage = "ERROR: Problem connecting to OMS database.  Contact technical support or try again later."; 
    }
4

5 に答える 5

0

EDFが印刷されない場合は、ライブラリのロードに問題があります。そのライブラリへの参照を追加しましたか?

于 2012-06-27T01:54:17.817 に答える
0

外側の try catch ブロックで例外をキャッチすることをお勧めします。したがって、他の例外はキャッチされ、認識されずに出力されます。CL クラスパスに mysql コネクタ Java jar ファイルをロードしましたか? (ちなみにCLって何?)

于 2012-06-27T02:16:06.277 に答える
0

その理由は次の行です。

Class.forName(driver);

MySQL JDBC ドライバーがクラスパスにありません。これが原因であることを確認したい場合は、コードに 1 行追加します。

    } catch (ClassNotFoundException cnfe){
        orderMessage = "ERROR: Problem connecting to OMS database.  Contact technical support or try again later."; 
        cnfe.printStackTrace();

    }
于 2012-06-27T02:21:11.977 に答える
0

試してみてください: java -cp /path/to/jdbc/driver.jar:。あなたのメインクラス

于 2012-06-27T02:33:29.227 に答える
0

これが Eclipse で機能する理由は、おそらくプロジェクトの Eclipse クラスパスに追加したためであり、実行するメイン プログラムに自動的に含まれます。

コマンドラインの場合、クラスパスが正しく設定されていることを確認してください:

java -cp classes:/path/to/driver.jar MainClass

ここで重要な部分は「-cp /path/to/driver.jar」です。「-cp」引数には、すべての jar (*NIX では : で区切られ、Windows では ; で区切られています) と、クラスが保存されているディレクトリを含める必要があります。

または、jarファイルを含む「lib」ディレクトリをどこかに作成し、次のようにします。

java -cp "classes:lib/*"  MainClass

Java がそのような * を検出すると、指定されたディレクトリ内のすべての jar ファイルを検索する必要があると見なされます。

于 2012-06-27T02:28:22.963 に答える