2017-05-28 163 views
0

您好我正试图插入数据到MySQL数据库,我得到这样的错误。在android studio上插入数据到mysql

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. 

和这里使用的代码

在Activity_Main.java

发送按钮

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); 
    } 

我试图使由于2-天内对该真实,我不知道该怎么办。 哪里出错?

对不起英语不好,任何人都可以帮助我吗?

和这些代码在下面php程序中使用:

的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; 
     } 
    } 

我不知道我该怎么办,现在我搜索在谷歌,但我没有关于这个问题。

回答

0

的问题是在这条线SQLiteDatabase db = this.getWritableDatabase();,而不是this你必须通过声明

yourdatabaseclass obj = new yourdatabasecalss (yourclass.this)添加你的数据库对象,然后宣布

SQLiteDatabase db = obj.getWritableDatabase();

+0

你能帮助我的TeamViewer? –