从android应用程序获取数据,并使用php将其存储在sql数据库中

从android应用程序获取数据,并使用php将其存储在sql数据库中,php,android,phpmyadmin,Php,Android,Phpmyadmin,我想从我的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

我想从我的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);
    }
}
package com.example.sara.myapplication;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.Toast;
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
公共类addupdel_活动扩展了AppCompatActivity实现了View.OnClickListener{
私有文本名;
私人编辑文本作者;
私人编辑文本iisbn;
专用最终字符串寄存器\u URL=”http://localhost/android/create_book.php";
私人按钮Aggiungi;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u addupdel\u activity);
name=(EditText)findViewById(R.id.nome);
作者=(编辑文本)findViewById(R.id.autore);
iisbn=(编辑文本)findViewById(R.id.isbn);
Aggiungi=(按钮)findViewById(R.id.Aggiungi);
Aggiungi.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
如果(v==Aggiungi){
registerUser();
}
}
私有无效注册器(){
字符串nome=name.getText().toString().trim().toLowerCase();
字符串autore=author.getText().toString().trim().toLowerCase();
字符串isbn=iisbn.getText().toString().trim().toLowerCase();
登记册(nome、autore、isbn);
}
专用无效寄存器(字符串名称、字符串自动、字符串isbn){
字符串urlSuffix=“?nome=nome&autore=autore&isbn=isbn”;
类注册器扩展异步任务{
对话加载;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
loading=ProgressDialog.show(addupdel_activity.this,“请稍候”,null,true,true);
}
@凌驾
受保护的void onPostExecute(字符串s){
super.onPostExecute(s);
loading.dispose();
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_LONG.show();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
字符串s=params[0];
BufferedReader BufferedReader=null;
试一试{
URL=新URL(注册URL+s);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
bufferedReader=新的bufferedReader(新的InputStreamReader(con.getInputStream());
字符串结果;
结果=bufferedReader.readLine();
返回结果;
}捕获(例外e){
返回null;
}
}
}
RegisterUser ru=新的RegisterUser();
执行(URL后缀);
}
}

:

有人能告诉我哪里出错了吗?为什么不在sql中存储值


提前感谢。

您没有使用传递到
寄存器的值。更改此行:

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;
}

是否确保此链接正常工作

只要试着在你的浏览器中启动url,如果它返回一个真实的结果,那么我认为错误发生在你的后台任务中


由于我从未尝试使用ur方法连接db,但我可以建议您使用okHttpClient3库进行db连接

这给了我以下错误:错误:找不到符号变量responseCode只需在
try
之前将其初始化为int
responseCode=0
;doinbackground中缺少return语句。它继续向我提供发现的错误,响应代码=0;不要在
REGISTER\u URL
中使用
localhost
,而是使用系统的当前
IpAddress
。比如:
“http://192.168.0.1/android/create_book.php";
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;
}