Android:无法使用php在mysql数据库中插入数据

Am making a sample app where the user can add id and name . But the i don't get any errors nor i get the output.

Here's the source code for java:

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;


public class MainActivity extends ActionBarActivity {

    String name;
    String id;
    InputStream is=null;
    String result=null;
    String line=null;
    int code;

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

        final EditText e_id=(EditText) findViewById(R.id.editText1);
        final EditText e_name=(EditText) findViewById(R.id.editText2);
        Button insert=(Button) findViewById(R.id.button1);

        insert.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                id = e_id.getText().toString();
                name = e_name.getText().toString();

                insert();
            }
        });
    }

    public void insert()
    {
        ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();

        nameValuePairs.add(new BasicNameValuePair("id",id));
        nameValuePairs.add(new BasicNameValuePair("name",name));

        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://192.168.1.101/API/insert.php");
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();
            Log.e("pass 1", "connection success ");
        }
        catch(Exception e)
        {
            Log.e("Fail 1", e.toString());
            Toast.makeText(getApplicationContext(), "Invalid IP Address",
                    Toast.LENGTH_LONG).show();
        }

        try
        {
            BufferedReader reader = new BufferedReader
                    (new InputStreamReader(is,"iso-8859-1"),8);
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null)
            {
                sb.append(line + "
");
            }
            is.close();
            result = sb.toString();
            Log.e("pass 2", "connection success ");
        }
        catch(Exception e)
        {
            Log.e("Fail 2", e.toString());
        }

        try
        {
            JSONObject json_data = new JSONObject(result);
            code=(json_data.getInt("code"));

            if(code==1)
            {
                Toast.makeText(getBaseContext(), "Inserted Successfully",
                        Toast.LENGTH_SHORT).show();
            }
            else
            {
                Toast.makeText(getBaseContext(), "Sorry, Try Again",
                        Toast.LENGTH_LONG).show();
            }
        }
        catch(Exception e)
        {
            Log.e("Fail 3", e.toString());
        }
    }




}

and the insert.php

<?php
        $host='localhost';
        $uname='root';
        $pwd='john123';
        $db="mydatabase";

        $con = mysql_connect($host,$uname,$pwd) or die("connection failed");
        mysql_select_db($db,$con) or die("db selection failed");

        $id=$_REQUEST['id'];
        $name=$_REQUEST['name'];

        $flag['code']=0;

        //if($r=mysql_query("insert into sample values('$id','$name') ",$con))
        if($r=mysql_query("insert into sample (id,name) values('$id','$name') ",$con))
        {
                $flag['code']=1;
                echo"hi";
        }

        print(json_encode($flag));
        mysql_close($con);
?>

and the error is :

0000, KeyEvent { action=ACTION_UP, keyCode=KEYCODE_TAB, scanCode=15, metaState=0, flags=0x8, repeatCount=0, eventTime=9150448, downTime=9150174, deviceId=0, source=0x101 }
01-30 07:48:47.762      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 07:48:47.871      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 07:48:47.871      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 07:52:36.521      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 07:52:36.571      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 07:52:36.571      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 07:52:38.921      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 07:52:38.941      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 07:52:38.941      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 07:52:41.761      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 07:52:41.781      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 07:52:41.781      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 07:52:42.771      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 07:52:42.822      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 07:52:42.822      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 08:01:32.341      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 08:01:32.391      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 08:01:32.391      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 08:01:35.532      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 08:01:35.581      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 08:01:35.581      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 08:02:23.291      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 08:02:23.421      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 08:02:23.421      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 08:02:27.131      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 08:02:27.251      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 08:02:27.251      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException
01-30 08:06:30.621      982-982/com.example.john.mysql_insert E/Fail 1﹕ android.os.NetworkOnMainThreadException
01-30 08:06:30.841      982-982/com.example.john.mysql_insert E/Fail 2﹕ java.lang.NullPointerException: lock == null
01-30 08:06:30.841      982-982/com.example.john.mysql_insert E/Fail 3﹕ java.lang.NullPointerException

1个回答



您正在主线程上调用网络内容( insert()</ code>方法),Android中不允许这样做 发展。 尝试使用 AsyncTask </ code>来包装 insert()</ code>逻辑。 此外,请考虑您是否已将 INTERNET </ code>权限添加到清单文件中。</ p>
</ div>

展开原文

原文

You are calling network stuff (insert() method) on main thread, which is not allowed in Android development. Try using AsyncTask to wrap insert() logic. Besides, consider if you already added INTERNET permission to your manifest file.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐