java 如何将 phpmyadmin 数据库与 android 应用程序连接

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/34291105/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 22:41:33  来源:igfitidea点击:

how to connect phpmyadmin database with android application

javaphpandroidmysqldatabase

提问by uma nab

I have asked this question before but that time i didn't have php file, now i have created php files and saved it on my xampp folder and its working i have checked it, the problem is in the code somewhere. I am trying to link my android studio register page with database but its not working. when user enters their details it should automatically save it on the database that I've created on phpmyadmin but when i click register on the app nothing happens. I am going to past the code below, please can anybody tell me wheres the problem? thanks

我以前问过这个问题,但那时我没有 php 文件,现在我已经创建了 php 文件并将其保存在我的 xampp 文件夹中,我已经检查过它的工作情况,问题出在代码中。我正在尝试将我的 android studio 注册页面与数据库链接,但它不起作用。当用户输入他们的详细信息时,它应该自动将其保存在我在 phpmyadmin 上创建的数据库中,但是当我在应用程序上单击注册时,什么也没有发生。我将通过下面的代码,请谁能告诉我问题出在哪里?谢谢

this is my register java class

这是我的注册 java 类

ublic class Register extends Activity {

EditText ET_FIRST_NAME, ET_LAST_NAME, ET_ADDRESS, ET_EMAIL, ET_PASSWORD;
String first_name,last_name,address,email,password;

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

    ET_FIRST_NAME = (EditText)findViewById(R.id.etFname);
    ET_LAST_NAME = (EditText)findViewById(R.id.etLname);
    ET_ADDRESS = (EditText)findViewById(R.id.etAddress);
    ET_EMAIL = (EditText)findViewById(R.id.etEmail);
    ET_PASSWORD = (EditText)findViewById(R.id.etPassword);
}

public void btRegister(View view)
{
    first_name =  ET_FIRST_NAME.getText().toString();
    last_name = ET_LAST_NAME.getText().toString();
    address = ET_ADDRESS.getText().toString();
    email = ET_EMAIL.getText().toString();
    password = ET_PASSWORD.getText().toString();

    String method = "register";
    BackgroundTask backgroundTask = new BackgroundTask(this);
    backgroundTask.execute(method, first_name,last_name,address,email,password);
    finish();
}
}

this is the activity

这是活动

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_height="match_parent"
android:padding="15dp"
android:layout_width="match_parent"
android:background="#8a73d5">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Register Form"
    android:textAppearance="?android:textAppearanceLarge"
    android:textStyle="bold"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="2dp"
    />

<TextView
    android:layout_width="wrap_content"
    android:text="First Name"
    android:layout_height="wrap_content"
    android:textColor="#000000" />

<EditText
    android:id="@+id/etFname"
    android:layout_width="match_parent"

    android:layout_height="wrap_content"
     />

<TextView
    android:layout_width="wrap_content"
    android:text="Last Name"
    android:layout_height="wrap_content"
    android:textColor="#000000"
    android:background="#8a73d5" />

<EditText
    android:id="@+id/etLname"
    android:layout_width="match_parent"
    android:layout_marginBottom="1dp"
    android:layout_height="wrap_content"
     />

<TextView
    android:layout_width="wrap_content"
    android:text="Address"
    android:layout_height="wrap_content"
    android:textColor="#000000" />

<EditText
    android:id="@+id/etAddress"
    android:layout_width="match_parent"
    android:layout_marginBottom="1dp"
    android:layout_height="wrap_content"
    />

<TextView
    android:layout_width="wrap_content"
    android:text="Email"
    android:layout_height="wrap_content"
    android:textColor="#000000" />

<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textEmailAddress"
    android:id="@+id/etEmail"
     />

<TextView
    android:layout_width="wrap_content"
    android:text="Password"
    android:layout_height="wrap_content"
    android:textColor="#000000" />

<EditText
    android:id="@+id/etPassword"
    android:layout_width="match_parent"
    android:layout_marginBottom="1dp"
    android:inputType="textPassword"
    android:layout_height="wrap_content"
     />


<Button
    android:id="@+id/btRegister"
    android:text="Register"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

and this is the background task class where the all code is for saving info(login and register) to database.

这是后台任务类,其中所有代码用于将信息(登录和注册)保存到数据库。

public class BackgroundTask extends AsyncTask <String, Void, String> {
AlertDialog alertDialog;
Context ctx;

BackgroundTask(Context ctx){

    this.ctx = ctx;
}
@Override
protected void onPreExecute() {

    alertDialog = new AlertDialog.Builder(ctx).create();
    alertDialog.setTitle("Login Infomration");
}

@Override
protected String doInBackground(String... params) {
   String reg_url = "http://192.168.0.10/webapp/register.php";
    String login_url = "http://192.168.0.10/webapp/login.php";
    String method = params [0];
    if (method.equals("register") ){
        String first_name = params [1];
        String last_name = params [2];
        String address = params [3];
        String email = params [4];
        String password = params [5];
        try {
            URL url = new URL(reg_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            OutputStream OS = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8"));

            String data = URLEncoder.encode("first_name", "UTF-8") + "=" + URLEncoder.encode(first_name, "UTF-8") + "&" +
                    URLEncoder.encode("last_name", "UTF-8") + "=" + URLEncoder.encode(last_name, "UTF-8") + "&" +
                    URLEncoder.encode("address", "UTF-8") + "=" + URLEncoder.encode(address, "UTF-8")+ "&" +
                    URLEncoder.encode("email", "UTF-8") + "=" + URLEncoder.encode(email, "UTF-8")+ "&" +
                    URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
            bufferedWriter.write(data);
            bufferedWriter.flush();
            bufferedWriter.close();
            OS.close();
            InputStream IS = httpURLConnection.getInputStream();
            IS.close();
            httpURLConnection.disconnect();
            return "Registration Has Been Successful.";
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    else if(method.equals("login"))
    {
        String login_name = params[1];
        String login_pass = params[2];
        try {
            URL url = new URL(login_url);
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setRequestMethod("POST");
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setDoInput(true);
            OutputStream outputStream = httpURLConnection.getOutputStream();
            BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8"));
            String data = URLEncoder.encode("login_name","UTF-8")+"="+URLEncoder.encode(login_name,"UTF-8")+"&"+
                    URLEncoder.encode("login_pass","UTF-8")+"="+URLEncoder.encode(login_pass,"UTF-8");
            bufferedWriter.write(data);
            bufferedWriter.flush();
            bufferedWriter.close();
            outputStream.close();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader (new InputStreamReader(inputStream,"iso-8859-1"));
            String response = "";
            String line = "";
            while ((line = bufferedReader.readLine())!=null)
            {
                response+= line;
            }
            bufferedReader.close();
            inputStream.close();
            httpURLConnection.disconnect();
            return response;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return null;
}

@Override
protected void onProgressUpdate(Void... values) {
    super.onProgressUpdate(values);
}

@Override
protected void onPostExecute(String result) {
    if(result.equals("Registration Has Been Successful."))
    {
        Toast.makeText(ctx, result, Toast.LENGTH_LONG).show();
    }
else
    {
        alertDialog.setMessage(result);
        alertDialog.show();
    }

}
}

回答by Rohit

Insted of using asynctask to connect with your php, you may use volley library to automate the process. It would make http requests on its own and fetch the result directly for you. A good guide for introduction to it is : http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

Insted 使用 asynctask 与您的 php 连接,您可以使用 volley 库来自动化该过程。它会自行发出 http 请求并直接为您获取结果。介绍它的一个很好的指南是:http: //www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

After trying to get things done by asyctask, i switched to volley, and it worked in just one attempt.

在尝试通过 asyctask 完成任务后,我切换到 volley,并且仅在一次尝试中就奏效了。

Happy coding.

快乐编码。