2013-07-10 24 views
1

我有個奇怪的問題。 我在AppEngine上使用GWT,我想創建連接到MySql的RPC。所有的這一天,我坐在上面。這是我實現的RPC方法:如何在GWT中連接MySql? (AppEngine)

java.sql.Connection con = null; 
    public DataBaseServiceImpl() { 
     try { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      System.out.print("bladd.."); 
      e.printStackTrace(); 
     } 

    String url ="jdbc:mysql://localhost:8806/base"; 
    try { 
     con = DriverManager.getConnection(url,"root", ""); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    } 
    @Override 
    public ArrayList<String[]> getTables(int idUser) throws SQLException { 

     Statement st = con.createStatement(); 
     ResultSet retrive = st.executeQuery("query"); 
     ArrayList<String[]> result = new ArrayList<String[]>(); 
     while(retrive.next()) 
     { 
      String[] s = new String[2]; 
      int theInt= retrive.getInt("ID__TABLE"); 
      String str = retrive.getString("LABEL"); 
      s[0]=Integer.toString(theInt); 
      s[1]=str; 
      result.add(s); 
     } 
     return result; 
    } 

而且我有這樣的錯誤:

java.sql.SQLException: Unable to initialize driver properties due to java.lang.IllegalAccessException: Class com.google.appengine.tools.development.agent.runtime.Runtime can not access a member of class com.mysql.jdbc.ConnectionPropertiesImpl with modifiers "private"

我沒有任何想法是什麼。 有人可以幫我嗎?

問候。

+0

這不是RPC。 –

+0

這只是從RemoteServiceServlet擴展並實現DataBaseService的類的實現。 –

回答

0

那麼底線是你有非常混亂的代碼。良好的編碼習慣存在很多違規行爲。

從你列入該行的代碼永遠不會被執行:

con = DriverManager.getConnection(url,"root", ""); 

於是爲你的數據庫沒有聯繫。您的例外是否表明此行

Statement st = con.createStatement(); 

是問題所在?

+0

你是對的..我改變這個:\t java.sql.Connection con = null; \t public DataBaseServiceImpl() { \t \t try { \t \t \t String url ="jdbc:mysql://localhost:8806/base"; \t \t \t Class.forName("com.mysql.jdbc.Driver").newInstance(); \t \t \t con = DriverManager.getConnection(url,"root", ""); \t \t } catch (Exception e) { \t \t \t // TODO Auto-generated catch block \t \t \t System.out.print("bladd.."+e.getMessage()); \t \t \t e.printStackTrace(); \t \t } \t } 但它仍然是同樣的問題。 –

0

我在運行jre1.7.0_25時遇到了同樣的問題。 我解決了它升級到jre1.7.0_45。