PHP和MySQL数据库与Android的连接 [英] Connection of php and mysql database with android

查看:140
本文介绍了PHP和MySQL数据库与Android的连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将MySQL中的数据库与android连接,但是当数据输入NewProductActivity并单击createproduct按钮时,生成不幸的错误已停止.下面给出的代码.在这个数据库中给出了路径,但我不知道确切要给出哪个路径,因为我使用了wamp和通过localhost打开数据库.运行该程序后,单击按钮,将值插入数据库指针,进入createProduct类及其方法,但不进入doInbackground().

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`

推荐答案

显然,"localhost"不是您要连接的正确URL.

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

如果您是从仿真器运行此应用程序,并且想连接到运行仿真器的PC上运行的Web服务器,请使用10.0.2.2,有关此内容的更多信息-

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

如果您不在仿真器上,请使用运行Web服务器的计算机的实际IP/主机.确保首先可用于Android设备.

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.

这篇关于PHP和MySQL数据库与Android的连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆