Aller au contenu

connection à une base SQL Server à partir d'android


scania113h

Recommended Posts

Bonjour à tous,

 

ayant découvert le développement android récepment via eclipse, j'essaye depuis quelques jours d'établir une connection entre mon application android et sql server, j'ai vu dans certains forums qu'il faut utiliser un pilote jtds, donc j'ai téléchargé la dernière version 1.3.1 et j'ai utilisé le code suivant :


monbtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Android"," MySQL Connect Example.");
Connection conn = null;
try {
String driver = "net.sourceforge.jtds.jdbc.Driver";
//Class.forName(driver).newInstance();
Class.forName(driver);
Log.i("Android"," pilote ok.");
String username = "sa";
String password = "123456";
conn = DriverManager.getConnection(connString,username,password);
Log.w("Connection","open");
Statement stmt = conn.createStatement();
ResultSet reset = stmt.executeQuery("select * from personne");
 
//Print the data to the console
while(reset.next()){
Log.w("Data:",reset.getString(1));
//               Log.w("Data",reset.getString(2));
}
conn.close();
 
} catch (Exception e)
{
Log.w("Error connection","" + e.getMessage());
}
      }
});
}
 



à l'execution et en appuyant sur le bouton il me sort l'erreur suivante :

 

ERROR CONNECTION       net.sourceforce.jtds.jdbc.Driver

 

Merci d'avance pour votre aide.

Modifié par scania113h
Lien vers le commentaire
Partager sur d’autres sites

bonjour LANNIG et merci pour votre réponse,

 

en fait, j'ai du par inadvertance supprimer cette ligne lors de la copie du code, donc voici le code :

 

 

monbtn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("Android"," MySQL Connect Example.");
Connection conn = null;
try {
String driver = "net.sourceforge.jtds.jdbc.Driver";
//Class.forName(driver).newInstance();
Class.forName(driver);
Log.i("Android"," pilote ok.");
//test = com.microsoft.sqlserver.jdbc.SQLServerDriver.class;
String username = "sa";
String password = "123456";
conn = DriverManager.getConnection(connString,username,password);
Log.w("Connection","open");
Statement stmt = conn.createStatement();
ResultSet reset = stmt.executeQuery("select * from personne");
 
//Print the data to the console
while(reset.next()){
Log.w("Data:",reset.getString(1));
//               Log.w("Data",reset.getString(2));
}
conn.close();
 
} catch (Exception e)
{
Log.w("Error connection","" + e.getMessage());
}
      }
});
}
Modifié par scania113h
Lien vers le commentaire
Partager sur d’autres sites

L'url JDBC pour identifier ton serveur n'apparait toujours pas dans ton extrait de code (d'ailleurs, à ce sujet, pourrais-tu stp utiliser les balises [ code ] pour tes extraits de code, cela rendrait ton sujet plus lisible)

Pour ce qui est de la cause de l'erreur, difficile de dire sans avoir plus de détail sur cette erreur; tu pourrais déjà afficher plus en détail dans les logs l'erreur se produisant, et nous indiquer ensuite ce qui s'y affiche

  catch(Exception e)
  {
    Log.w("Erreur connexion", e.getMessage(), e);
  }
Lien vers le commentaire
Partager sur d’autres sites

bonjour,

 

en fait, j'ai remarqué que comme s'il y'a quelque chose dans ce site qui filtre la ligne qui contient l'adresse IP et le numéro de port du serveur.... c'est bizzare...

 

voici le log géneré suite à l'exécution :

 

 

08-23 14:59:26.952: W/Error connection(309): net.sourceforge.jtds.jdbc.Driver
08-23 14:59:26.952: W/Error connection(309): java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver
08-23 14:59:26.952: W/Error connection(309): at java.lang.Class.classForName(Native Method)
08-23 14:59:26.952: W/Error connection(309): at java.lang.Class.forName(Class.java:235)
08-23 14:59:26.952: W/Error connection(309): at java.lang.Class.forName(Class.java:182)
08-23 14:59:26.952: W/Error connection(309): at com.example.rachid_andro.MainActivity$3.onClick(MainActivity.java:90)
08-23 14:59:26.952: W/Error connection(309): at android.view.View.performClick(View.java:2408)
08-23 14:59:26.952: W/Error connection(309): at android.view.View$PerformClick.run(View.java:8816)
08-23 14:59:26.952: W/Error connection(309): at android.os.Handler.handleCallback(Handler.java:587)
08-23 14:59:26.952: W/Error connection(309): at android.os.Handler.dispatchMessage(Handler.java:92)
08-23 14:59:26.952: W/Error connection(309): at android.os.Looper.loop(Looper.java:123)
08-23 14:59:26.952: W/Error connection(309): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-23 14:59:26.952: W/Error connection(309): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 14:59:26.952: W/Error connection(309): at java.lang.reflect.Method.invoke(Method.java:521)
08-23 14:59:26.952: W/Error connection(309): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-23 14:59:26.952: W/Error connection(309): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-23 14:59:26.952: W/Error connection(309): at dalvik.system.NativeStart.main(Native Method)
08-23 14:59:26.952: W/Error connection(309): Caused by: java.lang.NoClassDefFoundError: net.sourceforge.jtds.jdbc.Driver
08-23 14:59:26.952: W/Error connection(309): ... 15 more
08-23 14:59:26.952: W/Error connection(309): Caused by: java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver in loader dalvik.system.PathClassLoader[/data/app/com.example.rachid_andro-2.apk]
08-23 14:59:26.952: W/Error connection(309): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
08-23 14:59:26.952: W/Error connection(309): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
08-23 14:59:26.952: W/Error connection(309): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
08-23 14:59:26.952: W/Error connection(309): ... 15 more
 
 
je vais réessayer d'inserer le code via des cotes de codes :
 
Lien vers le commentaire
Partager sur d’autres sites

Le problème avec l'exception ClassNotFountException, c'est qu'elle n'est pas toujours explicite. Cela peut signifier que la classe en question n'a pas été trouvée (mais cela ne semble pas être le cas, si tu as bien mis le jar dans le projet).

Mais cela peut aussi dire que la classe n'a pas pu être chargée parce qu'une classe dont elle a besoin n'a pu être trouvée; le pilote jdbc n'a-t-il pas besoin d'un autre jar en dépendance ? que dit la doc du pilote jdbc ?

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

As-tu vérifié que ton jar est bien pris dans ton classpath.

Si tu fais CTRL+SHIFT+H et que tu tapes Driver, voies-tu bien la classe du jar de ton projet apparaitre ?

 

Sinon dans ton classpath (clic droit sur le projet puis properties puis java build path)as -tu vérifié que dans l'onglet order and export, ton jar apparait bien et qu'il est coché ? Il ne suffit plus de le mettre dans lib mais il faut aussi indiqué que la lib doit être exportée avec l'appli.

 

Marc

Lien vers le commentaire
Partager sur d’autres sites

bonjour à tous,

 

j'ai fais CRTL+SHIFT+H et je tape Driver , et je vois trés bien la classe du jar apparaitre.

 

ensuite j'ai fais prpriété sur mon projet, je suis allé ensuite sur "java build path" puis "order and export", et j'apperçois mon jar dans la liste et c'est coché.

 

cordialement. 

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...