【问题标题】:Android to Mysql local database insert data error FATAL ExceptionAndroid到Mysql本地数据库插入数据报错FATAL Exception
【发布时间】:2015-10-04 06:57:22
【问题描述】:

我正在制作简单的应用程序,它从 android 应用程序获取数据并将其传递到本地 mysql 数据库(wamp)。每当我单击提交时,它就会强制关闭。我只有 1 个将数据发送到 Mysql 的 MainActivity。

1.MainActivity

public class MainActivity extends ActionBarActivity {

EditText e_clas,e_teacher,e_name,e_mobile,e_email,e_note;
Button bSubmit;
//Database Connection file 
public static String url = "http://192.168.43.50/missconnection.php";
String clas,teacher,name,mobile,email,note;
InputStream is = null;
String exceptionMessage = "There seems to be some problem connecting to database. " +
        "Please check your Internet Connection and try again.";
String successMessage = "Data has been entered successfully";


@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     e_clas=(EditText) findViewById(R.id.Class);
     e_teacher=(EditText) findViewById(R.id.Teacher);
     e_name=(EditText) findViewById(R.id.Name);
     e_mobile=(EditText) findViewById(R.id.Mobile);
     e_email=(EditText) findViewById(R.id.Email);
     e_note=(EditText) findViewById(R.id.Note);
     bSubmit = (Button) findViewById(R.id.bSubmit);
    bSubmit.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
        clas=e_clas.getText().toString();
        teacher=e_teacher.getText().toString();
        name = e_name.getText().toString();
        mobile = e_mobile.getText().toString();
        email = e_mobile.getText().toString();
        note = e_note.getText().toString();
        if(clas.equals("")||
            teacher.equals("")||
            name.equals("")||
            mobile.equals("")||
            email.equals("")||
            note.equals("")){

            String msg = "Miss your one or more field Empty...";
            Toast.makeText(getApplicationContext(),msg,Toast.LENGTH_LONG).show();
            e_clas.setText("");
            e_teacher.setText("");
            e_name.setText("");
            e_mobile.setText("");
            e_email.setText("");
            e_note.setText("");
        }else{
            //insert in database fields
            List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
            nameValuePairList.add(new BasicNameValuePair("stud_clas",clas));
            nameValuePairList.add(new BasicNameValuePair("teacher", teacher));
            nameValuePairList.add(new BasicNameValuePair("name", name));
            nameValuePairList.add(new BasicNameValuePair("mobile",mobile));
            nameValuePairList.add(new BasicNameValuePair("email", email));
            nameValuePairList.add(new BasicNameValuePair("note", note));
            try{
                //send data to database
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairList));
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
                e_clas.setText("");
                e_teacher.setText("");
                e_name.setText("");
                e_mobile.setText("");
                e_email.setText("");
                e_note.setText("");
                Toast.makeText(getApplicationContext(), successMessage, Toast.LENGTH_LONG).show();
                is.close();
            }catch(IOException e){
                Toast.makeText(getApplicationContext(), exceptionMessage, Toast.LENGTH_LONG).show();
            }
        }

        }
    });         

2.这是日志文件

enter code here     10-04 02:33:59.020: E/AndroidRuntime(1253): FATAL EXCEPTION: main
    10-04 02:33:59.020: E/AndroidRuntime(1253): Process: com.example.idontunderstandmiss, PID: 1253
    10-04 02:33:59.020: E/AndroidRuntime(1253): android.os.NetworkOnMainThreadException
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at libcore.io.IoBridge.connect(IoBridge.java:112)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at java.net.Socket.connect(Socket.java:843)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at com.example.idontunderstandmiss.MainActivity$1.onClick(MainActivity.java:91)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at android.view.View.performClick(View.java:4424)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at android.view.View$PerformClick.run(View.java:18383)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at android.os.Handler.handleCallback(Handler.java:733)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at android.os.Handler.dispatchMessage(Handler.java:95)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at android.os.Looper.loop(Looper.java:137)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at android.app.ActivityThread.main(ActivityThread.java:4998)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at java.lang.reflect.Method.invokeNative(Native Method)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at java.lang.reflect.Method.invoke(Method.java:515)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
    10-04 02:33:59.020: E/AndroidRuntime(1253):     at dalvik.system.NativeStart.main(Native Method)

我还将访问权限放入清单文件 INTERNET。请帮助我该怎么办

【问题讨论】:

标签: php android mysql


【解决方案1】:

最后我通过添加这两行来解决这个问题

StrictMode.ThreadPolicy threadPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(threadPolicy);

【讨论】:

    【解决方案2】:
    1. HttpClient 在棒棒糖设备中已弃用。
    2. 您不能在主 UI 线程中运行长进程,例如连接到 Internet。使用异步任务或 Handler 执行 http 任务 you can flow this tutorial 或者你可以使用这个library

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 2017-07-27
      • 2017-03-16
      • 2016-03-25
      • 1970-01-01
      相关资源
      最近更新 更多