doqpm82240 2013-11-09 08:26
浏览 49
已采纳

用android连接php和mysql数据库

I am trying to connect database in MySQL with android,but when data enter in NewProductActivity and click on createproduct button then generate error of Unfortunately has stopped. code given below. In this database path is given but i don't know exactly which path i have to give because i used wamp and database open through localhost. After running this program, click on button to insert value in database pointer go into createProduct class and its method but do not go into doInbackground().

//NewProductActivity
package com.example.projectewithmysql;

import java.io.Console;
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.AlertDialog;
import android.app.AlertDialog.Builder;
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.*;
public class NewProductActivity extends Activity 
{
    private EditText inputName;
    private EditText inputPrice;
    private EditText inputDesc;
    private Button btnCreateProduct;
    JSONParser jsonParser  = new JSONParser();
     private static String url_create_product = "**localhost/android_coonect/product.php**";

        // JSON Node names
        private static final String TAG_SUCCESS = "success";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_product);
        inputName = (EditText) findViewById(R.id.inputName);
        inputPrice = (EditText) findViewById(R.id.inputPrice);
        inputDesc = (EditText) findViewById(R.id.inputDesc);

        // Create button
        btnCreateProduct = (Button) findViewById(R.id.btnCreateProduct);
        btnCreateProduct.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(getApplicationContext(), "Enter into button",Toast.LENGTH_LONG).show();
                new CreateNewProduct().execute();
                Toast.makeText(getApplicationContext(), "call createNewProduct",Toast.LENGTH_LONG).show();

            }
        });
    }

     class CreateNewProduct extends AsyncTask<String, String, String> 
     {
         private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "onPreExecute", Toast.LENGTH_LONG).show();
            super.onPreExecute();
             pDialog = new ProgressDialog(NewProductActivity.this);
                pDialog.setMessage("Creating Product..");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(true);
                pDialog.show();
        }
        @Override
        protected String doInBackground(String... args0) 
        {
            System.out.println("doInBackground");
            Toast.makeText(getApplicationContext(), "doInBackground", Toast.LENGTH_LONG).show();
            // TODO Auto-generated method stub
            String name = inputName.getText().toString();
            String price = inputPrice.getText().toString();
            String description = inputDesc.getText().toString();

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

            // getting JSON Object
            // Note that create product url accepts POST method
            JSONObject json = jsonParser.makeHttpRequest(url_create_product,
                    "POST", params);
            Toast.makeText(getApplicationContext(), ""+url_create_product, Toast.LENGTH_LONG).show();
            // 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(), AllProductsActivity.class);
                    startActivity(i);

                    // closing this screen
                    finish();
                } else {
                    // failed to create product
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            return null;
        }
        @Override
        protected void onPostExecute(String result) 
        {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            Toast.makeText(getApplicationContext(), "onPostExecute", Toast.LENGTH_LONG).show();
             pDialog.dismiss();
        }
     }
}

 here i am not used web-server but using json and I give information about database
I have made androiddb database and table is products that is given below

CREATE TABLE products(
pid int(11) primary key auto_increment,
name varchar(100) not null,
price decimal(10,2) not null,
description text,
created_at timestamp default now(),
updated_at timestamp
);
I try to enter data through android activity but error generate so please help..`enter code here`
  • 写回答

2条回答 默认 最新

  • doutu1939 2013-11-09 08:37
    关注

    obviously 'localhost' isn't the correct URL that you want to connect to.

    if you're running this app from an emulator and you want to connect to a web server running on the pc running the emulator, use 10.0.2.2, more about this - http://developer.android.com/tools/devices/emulator.html

    if you're not on an emulator, use the actual ip/host of the machine running the web server. make sure its accessible to the Android device first.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来