2014-02-10 42 views
0

這裏是我的android數據發佈到遠程數據庫的代碼,它不工作,因爲我希望,它根本不工作。沒有錯誤,沒有行動。幫助傢伙。我真的不知道發生了什麼..任何建議是值得歡迎的。在發佈到phpmyadmin時詢問asynctask

final String suma = Float.valueOf(zam.getSuma()).toString();` 

    ib_wyslij.setOnClickListener(new OnClickListener() {` 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     new MyAsyncTask().execute(suma); 
     } 
    }); 

    private class MyAsyncTask extends AsyncTask<String, Void, Void> { 

    @Override 
    protected Void doInBackground(String... params) { 
     // TODO Auto-generated method stub 
     postData(params[0]); 
     return null; 
    } 

    protected void onPostExecute(Double result) { 

     Toast.makeText(getApplicationContext(), "command sent", 
       Toast.LENGTH_LONG).show(); 
    } 



    public void postData(String valueIWantToSend) { 
     // Create a new HttpClient and Post Header 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://www.msinzynierka.cba.pl/executeConn.php"); 

     try { 
      // Add your data 

      List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
      nameValuePairs.add(new BasicNameValuePair("Zam_suma", 
        valueIWantToSend)); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

      // Execute HTTP Post Request 
      HttpResponse response = httpclient.execute(httppost); 

     } catch (ClientProtocolException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

} 

這是我執行的PHP腳本

[登錄&連接] 。 。 。 。

$Zam_suma = $_POST['Zam_suma']; 
mysql_query("INSERT INTO Zamowienie(Zam_suma) VALUES($Zam_suma)"); 
+0

格式化一行代碼可以通過在其開頭添加4個空格來完成。 –

+0

LogCat中的任何提示? –

+1

將'Log.d()'句子放在你的'AsyncTask'上,並查看它所在的位置。 – nKn

回答

0

您需要了解有關AsyncTask的設置方式不正確。我不知道它是否是你的問題,但你應該明白params

private class MyAsyncTask extends AsyncTask<String, Void, Void> { 

首先是什麼是你的執行過程中傳遞給doInBackground() ......這個看起來不錯。

第二個是onProgressUpdate()需要......這也看起來很好,因爲你沒有實現該方法。

第三個是從returndoInBackground()中傳遞給onPostExecute() ......這看起來不太好。你告訴onPostExecute()to expect nothing and returning nothing in doInBackground()which would be correct but then your onPostExecute()`應該像

protected void onPostExecute(Void result) { 

因爲你的方法簽名不正確,你實際上並沒有重寫AsyncTask方法,但它認爲,這是你自己的方法並且在doInBackground()完成時不會運行。這就是@Override註釋派上用場的地方。

+0

我已經改變了這個聲明,但沒有任何改變。 – user3293650

+0

等一下!第一個錯誤! :D 02-10 21:22:26.624:W/System.err(23590):導致:java.net.ConnectException:無法連接到/95.211.144.89(端口80):連接失敗:ETIMEDOUT(連接時間出) – user3293650

+0

作品!但有錯誤的價值......但工程;)謝謝你的傢伙;)! – user3293650