2013-02-16 2 views
0

Я загрузил код для разработки приложения для Android, связанного с mysql и php, чтобы узнать. отсюда: http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ Я попытался сделать те же шаги для большего понимания. Я создал вторую таблицу (тест) в тех же базе данных .. и я написал код PHP для создания нового сырца в (тестовой таблице) .. Это код PHP:connect android application with mysql

<?php 



// array for JSON response 
$response = array(); 

// check for required fields 
if (isset($_POST['name']) && isset($_POST['age'])){ 

    $name = $_POST['name']; 
    $age = $_POST['age']; 
    // include db connect class 
    require_once __DIR__ . '/db_connect.php'; 

    // connecting to db 
    $db = new DB_CONNECT(); 

    // mysql inserting a new row 
    $result = mysql_query("INSERT INTO test (name, age) VALUES('$name', '$age')"); 

    // check if row inserted or not 
    if ($result) { 
     // successfully inserted into database 
     $response["success"] = 1; 
     $response["message"] = "row successfully created."; 

     // echoing JSON response 
     echo json_encode($response); 
    } else { 
     // failed to insert row 
     $response["success"] = 0; 
     $response["message"] = "Oops! An error occurred."; 

     // echoing JSON response 
     echo json_encode($response); 
    } 
} else { 
    // required field is missing 
    $response["success"] = 0; 
    $response["message"] = "Required field(s) is missing"; 

    // echoing JSON response 
    echo json_encode($response); 
} 
?> 

После этого я добавил класс Java в проекте Eclipse, следующий код:

package com.example.androidhive; 



import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

public class NewRowActivity extends Activity{ 

    // Progress Dialog 
     private ProgressDialog pDialog; 

     JSONParser jsonParser = new JSONParser(); 

     EditText inputName; 
     EditText inputAge; 

     // url to create new row 
     private static String url_create_raw = "http://10.0.2.2/test/create_row.php"; 

     // JSON Node names 
     private static final String TAG_SUCCESS = "success"; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.add_raw); 

      // Edit Text 
      inputName = (EditText) findViewById(R.id.editTextName); 
      inputAge = (EditText) findViewById(R.id.editTextAge); 


      // Create button 
      Button btnAddRow = (Button) findViewById(R.id.buttonAdd); 

      // button click event 
      btnAddRow.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View view) { 
        // creating new product in background thread 
        new CreateNewRow().execute(); 
       } 
      }); 
     } 


     /** 
     * Background Async Task to Create new product 
     * */ 
     class CreateNewRow extends AsyncTask<String, String, String> { 

      /** 
      * Before starting background thread Show Progress Dialog 
      * */ 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       pDialog = new ProgressDialog(NewRowActivity.this); 
       pDialog.setMessage("Adding a raw .."); 
       pDialog.setIndeterminate(false); 
       pDialog.setCancelable(true); 
       pDialog.show(); 
      } 

      /** 
      * Adding raw 
      * */ 
      protected String doInBackground(String... args) { 
       String name = inputName.getText().toString(); 
       String age = inputAge.getText().toString(); 


       // Building Parameters 
       List<NameValuePair> params = new ArrayList<NameValuePair>(); 
       params.add(new BasicNameValuePair("name", name)); 
       params.add(new BasicNameValuePair("age", age)); 


       // getting JSON Object 
       // Note that create product url accepts POST method 
       JSONObject json = jsonParser.makeHttpRequest(url_create_raw, 
         "POST", params); 

       // check log cat fro response 
       Log.d("Create Response", json.toString()); 

       // check for success tag 
       try { 
        int success = json.getInt(TAG_SUCCESS); 

        if (success == 1) { 
         // successfully created product 
         Intent i = new Intent(getApplicationContext(), MainScreenActivity.class); 
         startActivity(i); 

         // closing this screen 
         finish(); 
        } else { 
         // failed to create product 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

       return null; 
      } 

      /** 
      * After completing background task Dismiss the progress dialog 
      * **/ 
      protected void onPostExecute(String file_url) { 
       // dismiss the dialog once done 
       pDialog.dismiss(); 
      } 

     } 
    } 

Когда приложение работает в эмуляторе не работает! И эмулятор остановился.

Любое решение?

+0

журнал регистрации также, когда приложение терпит крах, а также переводит весь код UI с 'doInBackground' на' onPostExecute' –

ответ

0

Вы настроили свой манифест Android для этого примера приложения, чтобы иметь разрешение на доступ в Интернет? Если вы еще не сделали этого, вам нужно добавить разрешение Интернета на файл манифеста:

<uses-permission android:name="android.permission.INTERNET" /> 

.... где-то за пределами тега приложения в вашем AndroidManifest.xml

+0

да, я сделал! но все же доцентная работа – Sara

0

Ваш подход немного отличается от нормы. Почему бы вам просто не создать класс/метод для подключения к php-скрипту, который вы затем можете назвать позже? Это лучший подход.

+0

это мой первый раз, когда я хочу программы для Android, я просто следую инструкциям в учебной ссылке .. настройте мою базу данных mysql, код моего php api, а затем код моей программы Android! На самом деле я не могу понять, что вы имеете в виду :( – Sara