2012-02-15 17 views
-1

どのようにjavaプログラムを介して別のシステムmysqlデータベースにアクセスするには?次のプログラムを使用していますが、私は通信エラーを取得しましたか?変更は、別のシステムmysqlデータベースを接続する必要がありますか?javaプログラムを介して別のシステムのmysqlデータベースにアクセスするには?

Public void dbconnection() { 

      String name = ""; 
      String port = "3306"; 
      String user = "system"; 
      String pass = "system"; 
      String dbname = "cascade_demo"; 
      String host="192.168.1.61"; 

      try { 

       Class.forName("com.mysql.jdbc.Driver"); 

        String url = "jdbc:mysql://"+host+":"+ port + "/" + dbname; 
       System.out.println("URL:" + url); 
       Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
       Connection con = DriverManager.getConnection(url, user, pass); 
       String qry2 = "select * from item_master"; 
       Statement st = con.createStatement(); 
       ResultSet rs = st.executeQuery(qry2); 
       while (rs.next()) { 

        name = rs.getString(1); 
        System.out.println("Name:" + name); 

       } 


       rs.close(); 
       st.close(); 
       con.close(); 


      } catch (Exception e) { 
       System.out.println("Exception:" + e); 
      } 
     } 
+0

今私はすべてのエラーメッセージを取得できませんでしたが、私は与えている接続文字列が –

+0

@AnilKumarReddyを貼り付けてくださいあなたのマシンとMySQLデータベースマシンとの間の接続をチェックしましたか?マシンからMysqlクライアント経由で同じ資格情報を使用して接続できますか? – javalearner

+0

に接続されていなかったエラー – Rocky

答えて

0

あなたは、ドライバクラスのインスタンスを作成していない:

Class.forName("com.mysql.jdbc.Driver").newInstance(); 

[更新:すべての後に必要ではない、それを無視する]

をそして、あなたはまた、「太陽を参照しています。 jdbc.odbc.JdbcOdbcDriver "、それは必要ですか?もしそうなら、それをインスタンス化してはいけませんか?

localhostで動作し、指定されたIPで動作しない場合、mysqlがすべてのポートで待機するように設定する必要があります。私はあなただけの別のホストや他の資格情報を使って、例えば、他の接続文字列を指定する必要が理解したよう

[email protected]:/tmp$ cat dbconnection.java; javac dbconnection.java; sudo java -cp .:/usr/share/maven-repo/mysql/mysql-connector-java/5.1.16/mysql-connector-java-5.1.16.jar dbconnection 
import java.sql.*; 
public class dbconnection { 
public static void main(String args[]) { 
    String name = ""; 
    String port = "3306"; 
    String user = "root"; 
    String pass = ""; 
    String dbname = "imagetagging"; 
    String host="127.0.0.1"; 
    try { 
    Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    String url = "jdbc:mysql://"+host+":"+ port + "/" + dbname; 
    System.out.println("URL:" + url); 
    //Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
    Connection con = DriverManager.getConnection(url, user, pass); 
    String qry2 = "select * from taggers"; 
    Statement st = con.createStatement(); 
    ResultSet rs = st.executeQuery(qry2); 
    while (rs.next()) { 
    name = rs.getString(1); 
    System.out.println("Name:" + name); 
    } 
    rs.close(); 
    st.close(); 
    con.close(); 
    } catch (Exception e) { 
    System.out.println("Exception:" + e); 
    } 
} 
} 
URL:jdbc:mysql://127.0.0.1:3306/imagetagging 
Name:1 
Name:2 
Name:3 
Name:4 
Name:5 
Name:6 
Name:7 
Name:8 
Name:9 
Name:10 
Name:11 
Name:12 
Name:13 
Name:14 
Name:15 
Name:16 
Name:17 
Name:18 
Name:19 
Name:20 
Name:21 
+0

を参照してくださいnewInstance();まだデータベースにアクセスしていません。 – javalearner

+0

同じ資格情報を使用して、mysqlコマンドラインクライアントでデータベースに接続できますか? –

+0

ええと、newInstance()もなくても動作します...悪いです。 –

0

あなたが3に接続するための簡単なもの(第四ステップオプションで)しなければならない
 ... 
     String port = "3306"; 
     String user = "user_name"; 
     String pass = "password"; 
     String dbname = "db_name"; 
     String host="host_name"; 
     ... 
+0

私は別の接続文字列を必要とする理由? – javalearner

+0

あなたが別のMySQLサーバーに接続するか、別のオプション(例えば、データベース名、ユーザー、パスワード、ポートなど)を使用する場合は、接続文字列でこれを指定する必要があります。 – Devart

0

あなたのリモートのmysqlデータベースサーバに転送します。

  1. MySQLデータベース管理用のGUIツール(IDE、Mysql Workbenchなど)を開き、資格情報、ホスト、ポート、データベース名を指定してデータベースに接続できるかどうかを確認します。 それが成功すれば、db部に何も間違いがないことを知っています(3に行く)。そうでない場合は、ポイント2まで行ってください。
  2. how to enable remote access to your dbをチェックしてくださいそしてもう一度試して

  3. あなたは少しあなたのコードをクリーンアップする必要がありますが、どのように接続し、上のJavaとの単純なSQL文を実行するのは簡単にし、上の点のチュートリアルに見て(PKT 1に行く)Vogella tutorial

  4. すべて正常に機能したら、Vogellaチュートリアルで+1を忘れずに、サイバーシティーや他のウェブサイトを賞賛して、yのリモートアクセスを有効にする方法の説明を覚えておいてくださいデシベルOUとすべての良い答えをStackOverflowのと報いるために戻ってくることを忘れないでください:)
関連する問題