La connexion à oracle dans android
De sorte que les gens vont probablement me dire que c'est une mauvaise idée, mais j'aimerais au moins lui donner un aller.
MODIFIER L'objectif de cette application est qu'elle ne peut fonctionner que lorsque l'appareil est partie d'un même réseau oracle db est sur ou est connecté au réseau via le VPN. Les informations contenues dans la base de données n'est pas accessible dans le monde entier, c'est pourquoi j'ai besoin d'une connexion directe à l'oracle db.
Maintenant en fonction de ce fil
Connexion de l'oracle dans une application android
Il a réussi à interroger l'oracle db.
J'ai donc une assez classe de base que lors de l'initialisation va essayer d'obtenir une connexion à ma base de données.
package com.producermobile;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import android.util.Log;
public class ConnectOra {
private Connection conn;
private Statement stmt;
public ConnectOra() throws ClassNotFoundException {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@x.x.x.x:1521:PR10";
this.conn = DriverManager.getConnection(url,"xxx","xxx");
this.conn.setAutoCommit(false);
this.stmt = this.conn.createStatement();
} catch(SQLException e) {
Log.d("tag", e.getMessage());
}
}
public ResultSet getResult() throws SQLException {
ResultSet rset = stmt.executeQuery("select customer from customers");
stmt.close();
return rset;
}
}
Et dans mon activité principale méthode onCreate j'ai cette
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
ConnectOra db = new ConnectOra();
ResultSet rs = db.getResult();
ArrayList<String> list = new ArrayList<String>();
while(rs.next()) {
list.add(rs.getString(1));
}
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, list));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
} catch(Exception e) {
}
}
Dans Eclipse, j'ai ajouter l'externe ojdbc14.jar fichier pour le build path.
Cependant quand je lance
this.conn = DriverManager.getConnection(url,"xxx","xxx");
Je reçois l'exception suivante
"Io exception: La Carte Réseau
n'a pas pu établir la connexion"
Cependant, si je crée une instance de cette classe à l'intérieur d'une norme d'application java avec une méthode main, la connexion fonctionne. Des idées?
- Notez que de nombreuses entreprises séparer de leur réseau d'entreprise de la wifi et d'une couche supplémentaire de sécurité d'exiger de l'entreprise de VPN pour être utilisé.
Vous devez vous connecter pour publier un commentaire.
🙂 oui, je suis celui qui vais vous dire u c'est une "mauvaise" idée. À mon humble avis, étant donné que les applications Android sont conçus pour s'exécuter sur les mobiles, où la connectivité peut être un problème ou être temporairement perdu, je demande chaque bonne application devrait avoir un certain degré de capacité hors ligne. Donc, si vous voulez mettre en œuvre certaines très basique mécanisme de synchronisation - comme, par exemple, a démontré avec le SampleSyncAdapter - qui se synchronise avec les applications locales db SQLite.
Je pense que c'est la meilleure façon d'aller (aussi pour l'expérience de l'utilisateur).
Oracle est un produit qui offre à la fois la synchronisation de données avec Oracle DB ainsi que des fonctionnalités en mode hors connexion; il est appelé Serveur Mobile
Ils façon dont cela fonctionne est, vous venez de stocker vos données SQLite, et le client Oracle va gérer la synchronisation. Bien sûr, vous devez installer et configurer le serveur mobile, et chaque nouveau dispositif devra être mis en service, mais une fois que c'est fait, il "fonctionne, tout simplement!"
Il y a un onglet télécharger dans le lien ci-dessus, vous pouvez télécharger et de l'essayer, vous aimez.
J'espère que ça aide. Bonne chance avec votre problème.
Ce qui concerne
Eric, Oracle H
Avez-vous ajouté dans la AndroidManifest.xml le
uses-permission android:name="android.permission.INTERNET"
J'ai créer une application avec la même contrainte de la connectivité et de la base de données. J'ai fait cela, et j'ai un lot d'Exception (ArrayIndexOutOfBound lors de la connexion à la base de données.)
- Je utiliser ojdbc14.jar pour cela. Donc, j'ai "juste" fixer l'Exception que j'ai, et il serait OK...
Pour plus d'informations, voir cette rubrique
Désolé de relancer un vieux thread mais j'ai eu ce problème pendant une longue période et enfin, il fixe. Il suffit d'exécuter eclipse ou ce que vous êtes en développement en "en tant qu'administrateur" et l'erreur s'en aller.
L'autre et approche beaucoup plus facile est d'utiliser un Virtual Pilote JDBC qui s'appuie sur un sécuritaire architecture à trois niveaux: votre code JDBC est envoyé via HTTP à distance une Servlet qui filtre le code JDBC (configuration & sécurité) avant de passer à l'Oracle JDBC Driver. Le résultat est envoyé en arrière à travers le protocole HTTP.
Il y a des logiciels gratuits qui utilisent cette technique.
Juste Google "Android Driver JDBC sur HTTP".