App an Datenbank anbinden mit XAMPP

  • App an Datenbank anbinden mit XAMPP

    Hallo liebe Community,

    ich versuche meine App an eine Datenbank anzubinden, dabei verwende ich XAMPP, Apache und den phpmyadmin. Hierzu habe ich eine App gemacht, bei der vier String-Werte an meine Datenbank gesendet werden sollen. Dazu unten die relevanten Codeausschnitte. Beim "Registrieren" sollten die Daten (Name, Username, Email und Passwort) an die Datenbank von mir übermittelt werden.

    Das Problem: Beim "Registrieren" wird kein neuer Datensatz in der Datenbank angelegt. Wisst Ihr wieso dieser nicht erfolgreich an meine Datenbank übermittelt wird?
    Wichtige Info:
    • Ich musste den Port meines localhost's auf 8080 setzen, da der 80'er Port leider besetzt war.
    • Die Code-Zeilen 37.,38.,39. von der Datei ServerRequests.java werden als "deprecated" vom Android Studio markiert. (Also durchgestrichen!)
    • Im Anhang findet Ihr ein Bild meiner Datenbank.
    • Der Benutzer wurde bei phpmyadmin angelegt: root%JaALL PRIVILEGESJa
    • Ich verwende zum Testen ein Android Handy
    • Betriebssystem: Windows 10

    Java-Quellcode: Register.java

    1. public class Register extends AppCompatActivity implements View.OnClickListener {
    2. Button bRegister;
    3. EditText etName, etUsername, etEmail, etPassword;
    4. @Override
    5. protected void onCreate(Bundle savedInstanceState) {
    6. super.onCreate(savedInstanceState);
    7. setContentView(R.layout.activity_register);
    8. etName = (EditText) findViewById(R.id.etName);
    9. etUsername = (EditText) findViewById(R.id.etUsername);
    10. etEmail = (EditText) findViewById(R.id.etEmail);
    11. etPassword = (EditText) findViewById(R.id.etPassword);
    12. bRegister = (Button) findViewById(R.id.bRegister);
    13. bRegister.setOnClickListener(this);
    14. }
    15. @Override
    16. public void onClick(View v){
    17. switch(v.getId()){
    18. case R.id.bRegister:
    19. String name = etName.getText().toString();
    20. String username = etUsername.getText().toString();
    21. String email = etEmail.getText().toString();
    22. String password = etPassword.getText().toString();
    23. User user = new User(name, username, email, password);
    24. registerUser(user);
    25. break;
    26. }
    27. }
    28. private void registerUser(User user){
    29. ServerRequests serverRequests = new ServerRequests(this);
    30. serverRequests.storeUserDataInBackground(user, new GetUserCallback() {
    31. @Override
    32. public void done(User returnedUser) {
    33. startActivity(new Intent(Register.this, Login.class));
    34. }
    35. });
    36. }
    37. }
    Alles anzeigen




    Java-Quellcode: User.java

    1. public class User {
    2. String name, username, email, password;
    3. public User(String name, String username, String email, String password){
    4. this.name = name;
    5. this.username = username;
    6. this.email = email;
    7. this.password = password;
    8. }
    9. public User(String name, String password){
    10. this.name = name;
    11. this.password = password;
    12. }
    13. }
    Alles anzeigen

    Java-Quellcode: ServerRequests.java

    1. public class ServerRequests {
    2. ProgressDialog progressDialog;
    3. public static final int CONNECTION_TIMEOUT = 100 * 15;
    4. public static final String SERVER_ADDRESS = "http://192.168.178.33:8080/";
    5. public ServerRequests(Context context) {
    6. progressDialog = new ProgressDialog(context);
    7. progressDialog.setCancelable(false);
    8. progressDialog.setTitle("Processing");
    9. progressDialog.setMessage("Please wait...");
    10. }
    11. public void storeUserDataInBackground(User user, GetUserCallback userCallback) {
    12. progressDialog.show();
    13. new StoreUserDataAsyncTask(user, userCallback).execute();
    14. }
    15. public class StoreUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
    16. User user;
    17. GetUserCallback userCallback;
    18. public StoreUserDataAsyncTask(User user, GetUserCallback callBack) {
    19. this.user = user;
    20. this.userCallback = callBack;
    21. }
    22. @Override
    23. protected Void doInBackground(Void... params) {
    24. ArrayList<NameValuePair> dataToSend = new ArrayList<>();
    25. dataToSend.add(new BasicNameValuePair("name", user.name));
    26. dataToSend.add(new BasicNameValuePair("username", user.username));
    27. dataToSend.add(new BasicNameValuePair("email", user.email));
    28. dataToSend.add(new BasicNameValuePair("password", user.password));
    29. HttpParams httpRequestParams = new BasicHttpParams();
    30. HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
    31. HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
    32. HttpClient client = new DefaultHttpClient(httpRequestParams);
    33. HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php");
    34. try{
    35. post.setEntity(new UrlEncodedFormEntity(dataToSend));
    36. client.execute(post);
    37. } catch (Exception e) {
    38. e.printStackTrace();
    39. }
    40. return null;
    41. }
    42. @Override
    43. protected void onPostExecute(Void aVoid) {
    44. progressDialog.dismiss();
    45. userCallback.done(null);
    46. super.onPostExecute(aVoid);
    47. }
    48. }
    49. }
    Alles anzeigen

    PHP-Quellcode: Register.php

    1. <?php
    2. $con=mysqli_connect("localhost","root","admin","test");
    3. $name = $_POST["name"];
    4. $username = $_POST["username"];
    5. $email = $_POST["email"];
    6. $password = $_POST["password"];
    7. $statement = mysqli_prepare($con, "INSERT INTO user (name, username, email, password) VALUES (?, ?, ?, ?) ");
    8. mysqli_stmt_bind_parm($statement, "ssss", $name, $username, $email, $password);
    9. mysqli_stmt_execute($statement);
    10. mysqli_stmt_close($statement);
    11. mysqli_close($con);
    12. ?>
    Alles anzeigen
    Bilder
    • Datenbank.PNG

      88,01 kB, 1.258×426, 116 mal angesehen