Partage
  • Partager sur Facebook
  • Partager sur Twitter

Android studio Erreur execution SQL

    18 juin 2018 à 14:34:41

    bonjour

    J'ai crée une appli sauf qu'en utilisant plusieurs fenêtres il se pose une erreur dans la connexion à la BD pour l'exécution de mes requêtes SQL issue de la fenêtre "non principal". J'ai utilisé le même code sur les 2 fenêtres sauf qu'une plante et l'autre non. J'ai réussie à localiser l'erreur mais je n'arrive pas à le résoudre

    Voici le code de la fenêtre secondaire

    package com.example.utilisateur.a2222;

    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.Button;
    import android.widget.LinearLayout;
    import android.widget.TextView;

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    public class art_sans_code_barre extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.art_sans_cb);
    // recuperation de la structure de fichier xml art_sans_cb

    Button monArticle = null;
    monArticle = (Button) findViewById(R.id.button1);
    monArticle.setText("123");

    Connection con1 = null;
    Statement stmt = null;
    ResultSet rs = null;

    try {
    Class.forName("net.sourceforge.jtds.jdbc.Driver");
    } catch (ClassNotFoundException e) {
    System.out.println("Impossible de charger le pilote jdbc:odbc");

    }
    try {
    String connectionUr2 = "jdbc:jtds:sqlserver://192.168.0.152:1433;instance=SQLEXPRESS;" +
    "databaseName=marguerittes";

    con1 = DriverManager.getConnection(connectionUr2, "user", "****");

    } catch (SQLException e) {
    System.out.println("Impossible ");
    e.printStackTrace();
    }

    // Create and execute an SQL statement that returns some data.
    try {
    String SQL = "select * from touches_raccourcis ";
    stmt = con1.createStatement();
    rs = stmt.executeQuery(SQL);

    // Iterate through the data in the result set and display it.
    while (rs.next()) {

    monArticle = (Button) findViewById(R.id.button1);
    monArticle.setText(rs.getString(3));
    System.out.println(rs.getString(3) + " ça marche");

    }
    }

    // Handle any errors that may have occurred.
    catch (Exception e) {
    TextView monTxt = null;
    monTxt = (TextView) findViewById(R.id.txt_article);
    monTxt.setText("La requête n'a etait faite");

    e.printStackTrace();
    } finally {
    if (rs != null) try {
    rs.close();
    } catch (Exception e) {
    }
    if (stmt != null) try {
    stmt.close();
    } catch (Exception e) {
    }
    if (con1 != null) try {
    con1.close();
    } catch (Exception e) {
    }
    }
    }

    }

    l'erreur se situe 

    con1 = DriverManager.getConnection(connectionUr2, "user", "*****");

    Voici ce qu'indique les message d'erreur

    E/AndroidRuntime: FATAL EXCEPTION: main
                      Process: com.example.utilisateur.a2222, PID: 5080
                      java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.utilisateur.a2222/com.example.utilisateur.a2222.art_sans_code_barre}: android.os.NetworkOnMainThreadException
                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2666)
                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727)
                          at android.app.ActivityThread.-wrap12(ActivityThread.java)
                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478)
                          at android.os.Handler.dispatchMessage(Handler.java:102)
                          at android.os.Looper.loop(Looper.java:154)
                          at android.app.ActivityThread.main(ActivityThread.java:6123)
                          at java.lang.reflect.Method.invoke(Native Method)
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
                       Caused by: android.os.NetworkOnMainThreadException
                          at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
                          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:333)
                          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
                          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
                          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
                          at java.net.Socket.connect(Socket.java:605)
                          at java.net.Socket.connect(Socket.java:554)
                          at java.net.Socket.<init>(Socket.java:431)
                          at java.net.Socket.<init>(Socket.java:210)
                          at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:249)
                          at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:322)
                          at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:188)
                          at java.sql.DriverManager.getConnection(DriverManager.java:569)
                          at java.sql.DriverManager.getConnection(DriverManager.java:219)
                          at com.example.utilisateur.a2222.art_sans_code_barre.onCreate(art_sans_code_barre.java:40)
                          at android.app.Activity.performCreate(Activity.java:6723)
                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2619)
                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2727) 
                          at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1478) 
                          at android.os.Handler.dispatchMessage(Handler.java:102) 
                          at android.os.Looper.loop(Looper.java:154) 
                          at android.app.ActivityThread.main(ActivityThread.java:6123) 
                          at java.lang.reflect.Method.invoke(Native Method) 
                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889) 
                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779) 

    Merci par avance pour vos réponse

    -
    Edité par MarinaDevido 18 juin 2018 à 14:44:29

    • Partager sur Facebook
    • Partager sur Twitter
      19 juin 2018 à 9:31:03

      Je veux pas dire de betise mes il me semble que tu doive faire tes requette dans un thread secondaire pour evité de bloquer le thread principal.

      Utilise  AsyncTask.

      • Partager sur Facebook
      • Partager sur Twitter

      Android studio Erreur execution SQL

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown