简体   繁体   English

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

[英]how to connect phpmyadmin database with android application

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. 我之前曾问过这个问题,但是那个时候我没有php文件,现在我已经创建了php文件并将其保存在我的xampp文件夹中,并且我已经对其进行了检查,问题出在代码中。 I am trying to link my android studio register page with database but its not working. 我正在尝试将我的android studio注册页面与数据库链接,但无法正常工作。 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. 当用户输入其详细信息时,它应该自动将其保存在我在phpmyadmin上创建的数据库中,但是当我单击该应用程序上的注册时,什么也不会发生。 I am going to past the code below, please can anybody tell me wheres the problem? 我要遍历下面的代码,请有人告诉我问题出在哪里吗? thanks 谢谢

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

}
}

Insted of using asynctask to connect with your php, you may use volley library to automate the process. 出于使用asynctask与php连接的考虑,您可以使用volley库来自动执行该过程。 It would make http requests on its own and fetch the result directly for you. 它将自行发出http请求并直接为您获取结果。 A good guide for introduction to it is : http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/ 关于它的一个很好的指南是: 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完成任务后,我切换到凌空抽打,并且仅需尝试一次即可。

Happy coding. 快乐的编码。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM