簡體   English   中英

從android應用程序獲取數據並使用php將其存儲在sql數據庫中

[英]get data from android app and store it in sql database using php

我想從我的 android 應用程序中獲取數據並放入 sql 數據庫中,該數據庫位於 phpmyadmin(wampp 服務器)中。 這是我的代碼:

package com.example.sara.myapplication;

import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class addupdel_activity extends AppCompatActivity implements View.OnClickListener{

    private EditText name;
    private EditText author;
    private EditText iisbn;

    private final String REGISTER_URL = "http://localhost/android/create_book.php";
    private Button Aggiungi;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_addupdel_activity);

        name = (EditText) findViewById(R.id.nome);
        author= (EditText) findViewById(R.id.autore);
        iisbn = (EditText) findViewById(R.id.isbn);


        Aggiungi = (Button) findViewById(R.id.Aggiungi);
        Aggiungi.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v == Aggiungi){
            registerUser();
        }
    }

    private void registerUser() {
        String nome = name.getText().toString().trim().toLowerCase();
        String autore = author.getText().toString().trim().toLowerCase();
        String isbn= iisbn.getText().toString().trim().toLowerCase();


        register(nome,autore,isbn);
    }

    private void register(String nome, String autore, String isbn) {
        String urlSuffix = "?nome=nome&autore=autore&isbn=isbn";
        class RegisterUser extends AsyncTask<String, Void, String>{

            ProgressDialog loading;


            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                loading = ProgressDialog.show(addupdel_activity.this, "Please Wait",null, true, true);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                loading.dismiss();
                Toast.makeText(getApplicationContext(),s, Toast.LENGTH_LONG).show();
            }

            @Override
            protected String doInBackground(String... params) {
                String s = params[0];
                BufferedReader bufferedReader = null;
                try {
                    URL url = new URL(REGISTER_URL+s);
                    HttpURLConnection con = (HttpURLConnection) url.openConnection();
                    bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));

                    String result;

                    result = bufferedReader.readLine();

                    return result;
                }catch(Exception e){
                    return null;
                }
            }
        }

        RegisterUser ru = new RegisterUser();
        ru.execute(urlSuffix);
    }
}

php文件

結果

有人可以告訴我我哪里出錯了嗎? 為什么它不在 sql 中存儲值。

提前致謝。

您沒有使用傳遞給register方法的值。 更改此行:

String urlSuffix = "?nome=nome&autore=autore&isbn=isbn";

到:

 String urlSuffix = "?nome="+nome+"&autore="+autore+"&isbn="+isbn";

然后將doInBackground方法更改為:

int responseCode = 0;
try {

        URL url = new URL(REGISTER_URL+s);
        HttpURLConnection con = (HttpURLConnection) url.openConnection();

        // optional default is GET
        con.setRequestMethod("GET");
        responseCode = con.getResponseCode();
        if (responseCode == 200) {
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }

            in.close();
            return response.toString();
        }

    } catch (Exception ex) {
        Log.i("CaughtException", ex.getMessage());
    }
return "Error Found with Response Code = " + responseCode;
}

你確定這個鏈接有效嗎?

http://localhost/android/create_book.php?nome=nome&autore=autore&isbn=isbn

只是嘗試在您的瀏覽器中觸發 url,如果它返回一個真實的結果,那么我認為錯誤發生在您的 doInBackground 任務上。

因為我從不嘗試使用你的方法連接數據庫,但我可以建議你使用 okHttpClient3 庫來連接數據庫

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM