2017-01-10 26 views
0

我有一個oracle數據庫,我需要訪問的信息,但我不能。我已經導入OJDBC6司機,我創建的類:如何在android中連接到oracle數據庫?

public class JDBC_ORA { 
    static String userName="XXX"; 
    static String password="X"; 
    static String server="192.168.X.X"; 

    public Connection con; 

    public void conexion() {   
     try {   
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      con = DriverManager.getConnection("jdbc:oracle:thin:" + userName + "/" + password+ "@"+server);    

     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    } 


    public void cerrar (Connection con) { 
     try { 
      con.close(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 

     } 
    } 
} 

我這樣稱呼它在MainActivity:

JDBC_ORA ora_con = new JDBC_ORA(); 
    ora_con.conexion(); 
    try { 
     Statement stmt = ora_con.con.createStatement(); 
     rset = stmt.executeQuery("select * from asdf where cid='"+ var + "'"); 
     while (rset.next()) 
     { 
      System.out.println(blablablabla); 
      ora_con.con.commit(); 
     } 
     stmt.close(); 
     ora_con.cerrar(ora_con.con); 
    } catch (SQLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

,一定可以得到這樣的錯誤

Could not find class 'oracle.security.pki.OraclePKIProvider', referenced from method oracle.jdbc.driver.OracleDriver.<clinit> 

Could not find class 'javax.management.MBeanServer', referenced from method oracle.jdbc.driver.OracleDriver.registerMBeans 

有人可以幫助我請?

回答

2

不要。如果你這樣做,你必須把你的密碼放在應用程序中。這意味着你的數據庫是完全不安全的,任何有應用程序副本的人都可以訪問,5分鐘可以對其進行反編譯。相反,請使用位於您的應用和數據庫之間的Web服務。這樣你永遠不需要密碼就可以離開你的機器。

+0

在密碼字符串中,我把它和我的java程序中的連接都很好 – marcss

+0

@marcss:手機應用程序調用服務來獲取數據。該服務位於後端服務器上,只有服務器知道如何連接到數據庫。除了通過服務接口以外,外部世界不能訪問服務器。請注意,這也支持更改數據庫,而不必更改電話應用程序,只要手機應用程序和服務之間的界面不變。 –

+0

但我不想要這個。我只想連接到我的公司,並且我需要通過JDBC進行連接以獲取信息 – marcss

0

最佳實踐將使用用Java,.Net,PHP等編寫的Web服務。然後,您需要將您的應用程序與您創建的Web服務連接起來。另一種方法是使用Oracle Database Mobile Server

你可以找到如何輕鬆地在谷歌上創建網絡服務。