我想从我的Android设备

时间:2017-07-26 10:10:03

标签: android mysql

目前我可以通过邮递员或模拟器将用户添加到数据库中,但我需要能够从实际的Android设备插入数据。我需要做哪些调整?请看下面的代码

这是我在我的应用中使用的主要活动:

package ie.example.artur.adminapp;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.HashMap;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class MainActivity extends AppCompatActivity {


    EditText editTextName,editTextEmail,editTextPassword;
    TextView textView;
    private static final String DB_URL = "jdbc:mysql://10.3.2.51/socialmedia_website";
    private static final String USER = "zzz";
    private static final String PASS = "zzz";



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        findViewById(R.id.layoutProgress).setVisibility(View.GONE);
        textView = (TextView) findViewById(R.id.textView);
        editTextName = (EditText) findViewById(R.id.editTextName);
        editTextEmail = (EditText) findViewById(R.id.editTextEmail);
        editTextPassword = (EditText) findViewById(R.id.editTextPassword);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });
    }

    public void btnConn(View view) {

        findViewById(R.id.layoutProgress).setVisibility(View.VISIBLE);

        final ApiClient apiClient = new ApiClient();

        String email = editTextEmail.getText().toString();
        String name = editTextName.getText().toString();
        String password = editTextPassword.getText().toString();

        HashMap<String,String> parameters = new HashMap<>();
        parameters.put("email",email);
        parameters.put("name",name);
        parameters.put("password",password);

        Call<ApiResponse> call = apiClient.loginUser(parameters);
        call.enqueue(new Callback<ApiResponse>() {
            @Override
            public void onResponse(Call<ApiResponse> call, Response<ApiResponse> response) {
                if(response.isSuccessful())
                {
                    ApiResponse apiResponse = response.body();
                    if(apiResponse.getStatus() == 200 || apiResponse.getStatus() == 201)
                    {
                        findViewById(R.id.layoutProgress).setVisibility(View.GONE);
                        Send objSend = new Send();
                        objSend.execute("");

                        //Toast.makeText(MainActivity.this,"Success", Toast.LENGTH_SHORT);
                        textView.setText("Success.");
                    }
                    else
                    {
                        //Toast.makeText(MainActivity.this,apiResponse.getErrors(), Toast.LENGTH_SHORT);
                        textView.setText(apiResponse.getErrors());
                    }

                }
                else
                {
                    findViewById(R.id.layoutProgress).setVisibility(View.GONE);
                    //Toast.makeText(MainActivity.this,"Invalid api response.", Toast.LENGTH_SHORT);
                    textView.setText("Invalid api response.");
                }
            }

            @Override
            public void onFailure(Call<ApiResponse> call, Throwable t) {
                findViewById(R.id.layoutProgress).setVisibility(View.GONE);
                //Toast.makeText(MainActivity.this,"No host available or please check network connectivity.", Toast.LENGTH_SHORT);
                textView.setText("No host available or please check network connectivity.");
            }
        });
    }

    private class Send extends AsyncTask<String, String, String>

    {
        String msg = "";
        String name = editTextName.getText().toString();
        String email = editTextEmail.getText().toString();
        String password = editTextPassword.getText().toString();

        @Override
        protected void onPreExecute() {
            textView.setText("Please Wait Inserting Data");
        }

        @Override
        protected String doInBackground(String... strings) {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn = DriverManager.getConnection(DB_URL, USER, PASS);
                if (conn == null) {
                    msg = "Connection goes wrong";
                } else {
                    String query = "Insert INTO users (name,email,password) VALUES('" + name+"','"+email+"','"+password+"')";
                    Statement stmt = conn.createStatement();
                    stmt.executeUpdate(query);
                    msg = "Inserting Successful!!";

                }

                conn.close();

        }

        catch(
        Exception e
        )

        {
            msg = "Connection goes Wrong";
            e.printStackTrace();

        }

        return msg;


    }



@Override
    protected void onPostExecute(String msg) {textView.setText(msg);}



    }




}

Api客户端类

package ie.example.artur.adminapp;

import java.util.HashMap;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Call;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by asifj on 7/25/2017.
 */

public class ApiClient
{
    private String BASE_URL = BuildConfig.BASE_URL;

    ApiEndPoints apiService;

    public ApiClient() {
        HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
        OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
        logging.setLevel(HttpLoggingInterceptor.Level.BODY);

        httpClient.addInterceptor(logging); // <-- this is the important line!
        Retrofit retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).client(httpClient.build()).build();
        apiService = retrofit.create(ApiEndPoints.class);
    }

    public Call<ApiResponse> loginUser(HashMap<String, String> parameters)
    {
        return apiService.usercreate(parameters);
    }
}

如果您需要我分享更多课程,请在评论中告诉我

1 个答案:

答案 0 :(得分:0)

//这是您在主要活动中打电话的课程

public class PostRequest extends AsyncTask<Void, Void, String> {

    private String parameters;
    private Context context;

    public PostRequest(Context context) {
        this.context = context;
        Log.d("PostRequest", "Context set : " + context);
    }

    public void setParameters(String parameters) {
        this.parameters = parameters;
        Log.d("PostRequest", "Parameters set : " + parameters);
    }

    @Override
    protected String doInBackground(Void... params) {

        String response = null;

        try {

            URL url = new URL("url of your php script");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            connection.setRequestMethod("POST");

            OutputStreamWriter request = new OutputStreamWriter(connection.getOutputStream());
            request.write(parameters);

            request.flush();
            request.close();
            String line = "";
            InputStreamReader isr = new InputStreamReader(connection.getInputStream());
            BufferedReader reader = new BufferedReader(isr);
            StringBuilder sb = new StringBuilder();
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }

            response = sb.toString();

            isr.close();
            reader.close();

        } catch (IOException e) {
            // Error
        }

        return response;
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
    }
}

//在您的主要活动中,您将其称之为

PostRequest postRequest = new PostRequest(getContext());

postRequest.setParameters("param1=" + "param1value" + "&param2=" + "param2value");

postRequest.execute();