studio programacion móviles libros libro desarrollo desarrollar curso aprende aplicaciones java android oracle oracle11g

java - programacion - ¿Cómo conectar la base de datos de Android a Oracle?



manual de programacion android pdf (0)

Busqué en Internet y encontré soluciones usando Oracle Database Mobile Server u otras cosas, pero mi tarea es solo con ojdbc. Hice todas estas cosas pero no funcionó:

  • use ojdbc14.jar y oraclepki.jar (utilicé el último jar porque me dio una ClassNotFoundException en oracle.security.pki.OracleWallet)
  • reemplace el servidor local con mi dirección IP en tnsnames.ora y listener.ora
  • iniciar los servicios de Oracle

Así es como se ve mi conexión en Oracle Sql Developer: andr @ // localhost: 1521 / orcl.

Este es mi código:

public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); try { System.out.println(getDataFromDB()); } catch (SQLException e) { // } } public int getDataFromDB() throws SQLException { String jdbcURL = "jdbc:oracle:thin:@" + ip + ":1521:orcl"; String user = "andr"; String passwd = "andr"; int age = 0; try { DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); Connection conn = DriverManager.getConnection(jdbcURL, user, passwd); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("select age from person"); if (rs.next()) { age = rs.getInt("age"); } } catch (java.sql.SQLException e) { System.out.println("the exception is : " + e.toString()); } return age; } }

Las siguientes excepciones y errores aparecen cuando inicio la aplicación

I/dalvikvm(1901): Failed resolving Loracle/jdbc/xa/OracleXAResource; interface 360 ''Ljavax/transaction/xa/XAResource;'' W/dalvikvm(1901): Link of class ''Loracle/jdbc/xa/OracleXAResource;'' failed W/dalvikvm(1901): Unable to resolve superclass of Loracle/jdbc/xa/client/OracleXAResource; (771) W/dalvikvm(1901): Link of class ''Loracle/jdbc/xa/client/OracleXAResource;'' failed W/dalvikvm(1901): Unable to resolve superclass of Loracle/jdbc/driver/T4CXAResource; (778) W/dalvikvm(1901): Link of class ''Loracle/jdbc/driver/T4CXAResource;'' failed W/dalvikvm(1901): VFY: unable to find class referenced in signature (Loracle/jdbc/driver/T4CXAResource;) I/dalvikvm(1901): Could not find method oracle.jdbc.driver.T4CXAResource.setPasswordInternal, referenced from method oracle.jdbc.driver.T4CConnection.getPasswordInternal W/dalvikvm(1901): VFY: unable to resolve virtual method 6237: Loracle/jdbc/driver/T4CXAResource;.setPasswordInternal (Ljava/lang/String;)V D/dalvikvm(1901): VFY: replacing opcode 0x6e at 0x0002 I/dalvikvm(1901): Failed resolving Loracle/jdbc/pool/OracleDataSource; interface 279 ''Ljavax/naming/Referenceable;'' W/dalvikvm(1901): Link of class ''Loracle/jdbc/pool/OracleDataSource;'' failed I/dalvikvm(1901): Could not find method oracle.jdbc.pool.OracleDataSource.filterConnectionProperties, referenced from method oracle.jdbc.driver.PhysicalConnection.getProperties W/dalvikvm(1901): VFY: unable to resolve static method 7465: Loracle/jdbc/pool/OracleDataSource;.filterConnectionProperties (Ljava/util/Properties;)Ljava/util/Properties; D/dalvikvm(1901): VFY: replacing opcode 0x71 at 0x0002 W/dalvikvm(1901): VFY: unable to find class referenced in signature (Ljavax/transaction/xa/XAResource;) D/AndroidRuntime(1901): Shutting down VM W/dalvikvm(1901): threadid=1: thread exiting with uncaught exception (group=0xaccbeb20) D/dalvikvm(1901): GC_FOR_ALLOC freed 232K, 9% free 2997K/3288K, paused 2ms, total 2ms E/AndroidRuntime(1901): FATAL EXCEPTION: main E/AndroidRuntime(1901): Process: com.example.test, PID: 1901 E/AndroidRuntime(1901): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: E/AndroidRuntime(1901): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) E/AndroidRuntime(1901): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) E/AndroidRuntime(1901): at android.app.ActivityThread.access$800(ActivityThread.java:135) E/AndroidRuntime(1901): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) E/AndroidRuntime(1901): at android.os.Handler.dispatchMessage(Handler.java:102) E/AndroidRuntime(1901): at android.os.Looper.loop(Looper.java:136) E/AndroidRuntime(1901): at android.app.ActivityThread.main(ActivityThread.java:5017) E/AndroidRuntime(1901): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(1901): at java.lang.reflect.Method.invoke(Method.java:515) E/AndroidRuntime(1901): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) E/AndroidRuntime(1901): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) E/AndroidRuntime(1901): at dalvik.system.NativeStart.main(Native Method) E/AndroidRuntime(1901): Caused by: android.os.NetworkOnMainThreadException E/AndroidRuntime(1901): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145) E/AndroidRuntime(1901): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) E/AndroidRuntime(1901): at libcore.io.IoBridge.connectErrno(IoBridge.java:127) E/AndroidRuntime(1901): at libcore.io.IoBridge.connect(IoBridge.java:112) E/AndroidRuntime(1901): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) E/AndroidRuntime(1901): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) E/AndroidRuntime(1901): at java.net.Socket.startupSocket(Socket.java:567) E/AndroidRuntime(1901): at java.net.Socket.tryAllAddresses(Socket.java:128) E/AndroidRuntime(1901): at java.net.Socket.<init>(Socket.java:178) E/AndroidRuntime(1901): at java.net.Socket.<init>(Socket.java:150) E/AndroidRuntime(1901): at oracle.net.nt.TcpNTAdapter.connect(Unknown Source) E/AndroidRuntime(1901): at oracle.net.nt.ConnOption.connect(Unknown Source) E/AndroidRuntime(1901): at oracle.net.nt.ConnStrategy.execute(Unknown Source) E/AndroidRuntime(1901): at oracle.net.resolver.AddrResolution.resolveAndExecute(Unknown Source) E/AndroidRuntime(1901): at oracle.net.ns.NSProtocol.establishConnection(Unknown Source) E/AndroidRuntime(1901): at oracle.net.ns.NSProtocol.connect(Unknown Source) E/AndroidRuntime(1901): at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:844) E/AndroidRuntime(1901): at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:268) E/AndroidRuntime(1901): at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414) E/AndroidRuntime(1901): at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) E/AndroidRuntime(1901): at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) E/AndroidRuntime(1901): at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801) E/AndroidRuntime(1901): at java.sql.DriverManager.getConnection(DriverManager.java:179) E/AndroidRuntime(1901): at java.sql.DriverManager.getConnection(DriverManager.java:213) E/AndroidRuntime(1901): at com.example.test.MainActivity.getDataFromOraDB(MainActivity.java:36) E/AndroidRuntime(1901): at com.example.test.MainActivity.doStuff(MainActivity.java:18) E/AndroidRuntime(1901): at com.example.test.MainActivity.onCreate(MainActivity.java:56) E/AndroidRuntime(1901): at android.app.Activity.performCreate(Activity.java:5231) E/AndroidRuntime(1901): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) E/AndroidRuntime(1901): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) E/AndroidRuntime(1901): ... 11 more

¿Alguien me puede ayudar?