0

[解決済み]

ようやく問題が解決しました。接続に問題はありませんか...

問題は SQL クエリにあり、「arduinoData」という名前のテーブルで選択を行っていましたが、実際の名前は「arduinodata」です。

その方法はローカルでは機能しますが、オンラインで試してみると機能しません。

このため、戻り値は「null」であり、Java はそれを parsetoInt しようとしてエラーを表示していました。

お手数をおかけしますが、よろしくお願いいたします。


JDBC を使用してプログラムを MySQL データベースに接続しています。

私はすでにポート番号を入力しています。はい、私のデータベースにはアクセス許可があります。

localhost を使用すると問題なく動作しますが、リモートの MySQL データベースに接続しようとすると、コンソールにこのエラーが表示されます。

java.lang.ExceptionInInitializerError
Caused by: java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:454)
    at java.lang.Integer.parseInt(Integer.java:527)
    at serial.BDArduino.<clinit>(BDArduino.java:25)
Exception in thread "main" Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

前もって感謝します !

4

3 に答える 3

2

注:これは元々コメントでしたが、長すぎました。人々はNFEを見て、それがnullであるポートだと推測しているようです。これは誤解を招く恐れがあります。これは、ポートが不要であることを示すWORKINGコードです。誤解を招くような答えは避けてください。

        try {
          Class.forName("com.mysql.jdbc.Driver");
          String sourceURL = "jdbc:mysql://localhost/sodb";

          Connection conn = DriverManager.getConnection(sourceURL, "naishe", "p2ssword");
          Statement st = conn.createStatement();
          ResultSet rs = st.executeQuery("select count(*) from test_tab");
          while(rs.next()){
              System.out.println(rs.getString(1));
          }
        } catch(ClassNotFoundException cnfe) {
          System.err.println(cnfe);
        } catch(SQLException sqle) {
          System.err.println(sqle);
        }

(テーブルtest_tab3のレコード数)を正しく出力します。


標準ドライバを使用している場合、ポートは必要ありません。デフォルトは3306です。ここを参照してください http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html

JDBCURL形式

MySQL Connector /JのJDBCURL形式は次のとおりですが、角かっこ([、])内の項目はオプションです。

jdbc:mysql://[host][,failoverhost...][:port]/[database] » [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...

ホスト名が指定されていない場合、デフォルトで127.0.0.1になります。ポートが指定されていない場合、デフォルトで3306になります。これは、MySQLサーバーのデフォルトのポート番号です。

于 2012-10-20T04:44:47.057 に答える
-1

接続文字列にポート番号が含まれていないと思います。

static String url = "jdbc:mysql://mysql.mydomain.com.br:3306/myDB";

それ以外の

static String url = "jdbc:mysql://mysql.mydomain.com.br/myDB";

同じエラーが発生する場合は、次のようにmysql.mydomain.com.brを IP アドレスに置き換えることができます。

mysql.mydomain.com.br の代わりに、データベース接続文字列にリモート マシンの IP / ホスト名を指定するだけです。例えば:

jdbc:mysql://172.16.15.225:3306/yourdatabase

また、ポート 3306 へのアクセスをブロックしているファイアウォールがないことも確認してください。

接続しているユーザーが、この特定のホスト名からの接続を許可されていることを確認してください。開発環境の場合、これを行うのは安全です

'username'@'%'

これは、ユーザーGRANT マニュアルにパーミッションを付与するためのものです 。

于 2012-10-20T04:33:15.753 に答える
-1

で を使用する必要がありport numbersますconnection url as 3306。また、データベース アクセスに対するユーザー権限についても確認してください。付与されていない場合は、リモート データベースにアクセスする権限をユーザーに付与する必要があります。リンクを参照してください。

于 2012-10-20T04:34:26.097 に答える