2016-07-03 67 views
0

我有一個遠程託管的數據庫。我一直在研究一個FX應用程序,我連接到本地主機讀取和寫入數據庫中的數據。但現在我想將我的桌面應用程序連接到遠程託管的數據庫,並從那裏讀取和寫入數據。但它顯示我以下錯誤。將Java fx應用程序連接到遠程託管的數據庫



    SEVERE: null 
    java.sql.SQLException: null, message from server: "Host '103.253.39.4' is not allowed to connect to this MySQL server" 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937) 
     at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) 
     at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1037) 
     at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2239) 
     at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2270) 
     at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069) 
     at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:794) 
     at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:44) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
     at com.mysql.jdbc.Util.handleNewInstance(Util.java:389) 
     at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) 
     at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) 
     at java.sql.DriverManager.getConnection(DriverManager.java:664) 
     at java.sql.DriverManager.getConnection(DriverManager.java:270) 
     at com.garciaPlumbing.model.DatabaseManager.connect(DatabaseManager.java:38) 
     at com.garciaPlumbing.model.FittingDetails.getAllSuppliers(FittingDetails.java:155) 
     at com.garciaPlumbing.view.Layout_AddFittingType.(Layout_AddFittingType.java:52) 
     at com.garciaPlumbing.view.Layout_InsertFittingDetails.(Layout_InsertFittingDetails.java:37) 
     at com.garciaPlumbing.view.MenuItemTask.(MenuItemTask.java:23) 
     at com.garciaPlumbing.view.BasicLayout.(BasicLayout.java:40) 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:340) 
     at com.sun.javafx.application.LauncherImpl.lambda$launchApplicationWithArgs$148(LauncherImpl.java:327) 
     at com.sun.javafx.application.LauncherImpl$$Lambda$43/445051633.run(Unknown Source) 
     at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(PlatformImpl.java:323) 
     at com.sun.javafx.application.PlatformImpl$$Lambda$44/1775282465.run(Unknown Source) 
     at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292) 
     at com.sun.javafx.application.PlatformImpl$$Lambda$47/2028529302.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291) 
     at com.sun.javafx.application.PlatformImpl$$Lambda$45/2040495657.run(Unknown Source) 
     at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
     at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
     at com.sun.glass.ui.win.WinApplication.lambda$null$141(WinApplication.java:102) 
     at com.sun.glass.ui.win.WinApplication$$Lambda$37/1558600329.run(Unknown Source) 
     at java.lang.Thread.run(Thread.java:745) 

    Exception in thread "JavaFX Application Thread" Exception in thread "main" java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:483) 
     at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767) 
    Caused by: java.lang.NullPointerException 
     at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:358) 
     at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:303) 
     ... 5 more 
    java.lang.ExceptionInInitializerError 
     at java.lang.Class.forName0(Native Method) 
     at java.lang.Class.forName(Class.java:340) 
     at com.sun.javafx.application.LauncherImpl.lambda$launchApplicationWithArgs$148(LauncherImpl.java:327) 
     at com.sun.javafx.application.LauncherImpl$$Lambda$43/445051633.run(Unknown Source) 
     at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$166(PlatformImpl.java:323) 
     at com.sun.javafx.application.PlatformImpl$$Lambda$44/1775282465.run(Unknown Source) 
     at com.sun.javafx.application.PlatformImpl.lambda$null$164(PlatformImpl.java:292) 
     at com.sun.javafx.application.PlatformImpl$$Lambda$47/2028529302.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at com.sun.javafx.application.PlatformImpl.lambda$runLater$165(PlatformImpl.java:291) 
     at com.sun.javafx.application.PlatformImpl$$Lambda$45/2040495657.run(Unknown Source) 
     at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 
     at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
     at com.sun.glass.ui.win.WinApplication.lambda$null$141(WinApplication.java:102) 
     at com.sun.glass.ui.win.WinApplication$$Lambda$37/1558600329.run(Unknown Source) 
     at java.lang.Thread.run(Thread.java:745) 
    Caused by: java.lang.NullPointerException 
     at com.garciaPlumbing.model.FittingDetails.getAllSuppliers(FittingDetails.java:171) 
     at com.garciaPlumbing.view.Layout_AddFittingType.(Layout_AddFittingType.java:52) 
     at com.garciaPlumbing.view.Layout_InsertFittingDetails.(Layout_InsertFittingDetails.java:37) 
     at com.garciaPlumbing.view.MenuItemTask.(MenuItemTask.java:23) 
     at com.garciaPlumbing.view.BasicLayout.(BasicLayout.java:40) 
     ... 16 more 

這是我所做的建立連接。



    public class DatabaseManager { 
     private static final String CLASS_FORNAME = "com.mysql.jdbc.Driver"; 
     private static final String DATABASE_LOCATION = "jdbc:mysql://mysql.2freehosting.com/";//"jdbc:mysql://localhost:3306/"; 
     private static final String DATABASE_NAME = "u821323799_grc?";//"GarciaPlumbing2"; 
     private static final String USERNAME = "u821323799_grc";//"root"; 

     protected static Connection connection = null; 
     protected static PreparedStatement statement = null; 

     /** 
     * 
     * Connect() method is responsible for establishing any connection to database. 
     * 
     */ 
     public static void connect(){ 
      try { 
       Class.forName(CLASS_FORNAME); 
       connection = (Connection) DriverManager.getConnection(
         "jdbc:mysql://mysql.2freehosting.com/u821323799_grc?" 
         + "user=u821323799_grc&password=celloviii1"); 
      } catch (ClassNotFoundException | SQLException ex) { 
       Logger.getLogger(DatabaseManager.class.getName()).log(Level.SEVERE, null, ex); 
      }   
     } 
    } 

請有人幫助我一個更好的解決方案。

在此先感謝。

+0

看來這個問題是不是代碼,並在主機服務器,你需要允許遠程連接,特別是你從 –

+1

試圖主機是否明智在互聯網上以純文本形式發佈用戶名和密碼?我希望那些不是真正的憑據。閱讀如何授予給定用戶名,密碼和主機的權限。 – duffymo

回答

0

值java.sql.SQLException:無效,從服務器消息:「主機 ‘103.253.39.4’不允許連接到這個MySQL服務器」

這意味着在MySQL服務器遠程系統未配置爲接受來自103.253.39.4與提供的憑證的遠程連接。請配置遠程MySQL服務器以接受遠程連接,然後重試。

你可以試試:How to allow remote connection to mysql

+0

Hi @SyêðHàsânMâíñül你的問題解決了嗎? –

相關問題