2017-05-28 4 views
0

salut J'essaie d'insérer des données à la base de données MySQL et je reçois une erreur comme celle-ci.insérer des données à mysql sur android studio

W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4194cc98) 
W/dalvikvm: threadid=1: uncaught exception occurred 
W/System.err: java.lang.NullPointerException 
W/System.err:  at com.kayaserhat.kampanyalar.Activity_Main.kampanyaGir(Activity_Main.java:115) 
W/System.err:  at com.kayaserhat.kampanyalar.Activity_Main.access$200(Activity_Main.java:32) 
W/System.err:  at com.kayaserhat.kampanyalar.Activity_Main$1.onClick(Activity_Main.java:86) 
W/System.err:  at android.view.View.performClick(View.java:4463) 
W/System.err:  at android.view.View$PerformClick.run(View.java:18789) 
W/System.err:  at android.os.Handler.handleCallback(Handler.java:808) 
W/System.err:  at android.os.Handler.dispatchMessage(Handler.java:103) 
W/System.err:  at android.os.Looper.loop(Looper.java:193) 
W/System.err:  at android.app.ActivityThread.main(ActivityThread.java:5307) 
W/System.err:  at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err:  at java.lang.reflect.Method.invoke(Method.java:515) 
W/System.err:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:831) 
W/System.err:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647) 
W/System.err:  at dalvik.system.NativeStart.main(Native Method) 
W/dalvikvm: threadid=1: calling UncaughtExceptionHandler 
E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.kayaserhat.kampanyalar, PID: 3581 
        java.lang.NullPointerException 
         at com.kayaserhat.kampanyalar.Activity_Main.kampanyaGir(Activity_Main.java:115) 
         at com.kayaserhat.kampanyalar.Activity_Main.access$200(Activity_Main.java:32) 
         at com.kayaserhat.kampanyalar.Activity_Main$1.onClick(Activity_Main.java:86) 
         at android.view.View.performClick(View.java:4463) 
         at android.view.View$PerformClick.run(View.java:18789) 
         at android.os.Handler.handleCallback(Handler.java:808) 
         at android.os.Handler.dispatchMessage(Handler.java:103) 
         at android.os.Looper.loop(Looper.java:193) 
         at android.app.ActivityThread.main(ActivityThread.java:5307) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:515) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:831) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647) 
         at dalvik.system.NativeStart.main(Native Method) 
Application terminated. 

et ici en utilisant les codes

dans Activity_Main.java

bouton Envoyer

btnSend.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String dukkan = dukkanTxt.getText().toString(); 
       String kampanya = kampanyaTxt.getText().toString(); 

       if (!dukkan.isEmpty() && !kampanya.isEmpty()) { 
        kampanyaGir(dukkan, kampanya); 
       } else { 
        Toast.makeText(getApplicationContext(), 
          "Alanları boş bırakmayınız!", Toast.LENGTH_LONG) 
          .show(); 
       } 
      } 
     }); 

kampanyaGir()

private void kampanyaGir(final String dukkan, final String kampanya) { 
    // Tag used to cancel the request 
    String tag_string_req = "req_register"; 

    pDialog.setMessage("Veri giriliyor.. ..."); 
    showDialog(); 

    StringRequest strReq = new StringRequest(Method.POST, 
      Config_URL.URL_REGISTER, new Response.Listener<String>() { 

     @Override 
     public void onResponse(String response) { 
      Log.d(TAG, "Register Response: " + response.toString()); 
      hideDialog(); 

      try { 
       JSONObject jObj = new JSONObject(response); 
       boolean error = jObj.getBoolean("error"); 
       if (!error) { 
        // User successfully stored in MySQL 
        // Now store the user in sqlite 
        //String uid = jObj.getString("uid"); 

        //JSONObject user = jObj.getJSONObject("user"); 
        // String dukkan = user.getString("dukkan"); 
        // String kampanya = user.getString("kampanya"); 
       // String created_at = user 
         // .getString("created_at"); 


        // Inserting row in users table*/ 
        db.veriGir(dukkan, kampanya); 

        // success message 
        Toast.makeText(getApplicationContext(), "Başarılı", Toast.LENGTH_LONG).show(); 
       } else { 

        // Error occurred in registration. Get the error 
        // message 
        String errorMsg = jObj.getString("error_msg"); 
        Toast.makeText(getApplicationContext(), 
          errorMsg, Toast.LENGTH_LONG).show(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "Veri girişi esnasında sıkıntı: " + error.getMessage()); 
      Toast.makeText(getApplicationContext(), 
        error.getMessage(), Toast.LENGTH_LONG).show(); 
      hideDialog(); 
     } 
    }) { 

     @Override 
     protected Map<String, String> getParams() { 
      // Posting params to register url 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("tag", "verigir"); 
      params.put("dukkan", dukkan); 
      params.put("kampanya", kampanya); 

      return params; 
     } 

    }; 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(strReq, tag_string_req); 
} 

veriGir()

public void veriGir(String dukkan, String kampanya) { 
     SQLiteDatabase db = this.getWritableDatabase(); 

     ContentValues values = new ContentValues(); 
     values.put(KEY_DUKKAN, dukkan); // Name 
     values.put(KEY_KAMPANYA, kampanya); // Email 


     // Inserting Row 
     long id = db.insert(TABLE_KAMPANYA, null, values); 
     db.close(); // Closing database connection 

     Log.d(TAG, "Kampanya girildi: " + id); 
    } 

Je suis en train de faire ce vrai depuis 2 jours et je ne sais pas comment faire. où sont les erreurs?

désolé pour mauvais anglais tout le monde peut m'aider s'il vous plaît?

et ces codes sont utilisés en dessous php programme:

index.php

else if ($tag =='verigir') { 
    $dukkan = $_POST['dukkan']; 
    $kampanya = $_POST['kampanya']; 
    $user = $db->veriGir($dukkan, $kampanya); 
} 

DB_Functions.php

public function veriGir($dukkan, $kampanya) { 
     $result = mysql_query("INSERT INTO kampanyalar(dukkan, kampanya) VALUES('$dukkan', '$kampanya', NOW())"); 
     // check for successful store 
     if ($result) { 
      // get user details 
      $result = mysql_query("SELECT * FROM kampanyalar WHERE dukkan = $dukkan"); 
      // return user details 
      return mysql_fetch_array($result); 
     } else { 
      return false; 
     } 
    } 

Je ne sais pas ce que je vais faire maintenant je recherche dans google mais je n'ai rien à propos de ce problème.

Répondre

0

Le problème est dans cette ligne SQLiteDatabase db = this.getWritableDatabase(); au lieu de this vous devez ajouter votre objet de base de données en déclarant

yourdatabaseclass obj = new yourdatabasecalss (yourclass.this) déclarant alors

SQLiteDatabase db = obj.getWritableDatabase();

+0

pouvez-vous me aider à teamviewer? –