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: Register.java
public class Register extends AppCompatActivity implements View.OnClickListener {
Button bRegister;
EditText etName, etUsername, etEmail, etPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
etName = (EditText) findViewById(R.id.etName);
etUsername = (EditText) findViewById(R.id.etUsername);
etEmail = (EditText) findViewById(R.id.etEmail);
etPassword = (EditText) findViewById(R.id.etPassword);
bRegister = (Button) findViewById(R.id.bRegister);
bRegister.setOnClickListener(this);
}
@Override
public void onClick(View v){
switch(v.getId()){
case R.id.bRegister:
String name = etName.getText().toString();
String username = etUsername.getText().toString();
String email = etEmail.getText().toString();
String password = etPassword.getText().toString();
User user = new User(name, username, email, password);
registerUser(user);
break;
}
}
private void registerUser(User user){
ServerRequests serverRequests = new ServerRequests(this);
serverRequests.storeUserDataInBackground(user, new GetUserCallback() {
@Override
public void done(User returnedUser) {
startActivity(new Intent(Register.this, Login.class));
}
});
}
}
Alles anzeigen
Java: User.java
public class User {
String name, username, email, password;
public User(String name, String username, String email, String password){
this.name = name;
this.username = username;
this.email = email;
this.password = password;
}
public User(String name, String password){
this.name = name;
this.password = password;
}
}
Alles anzeigen
Java: ServerRequests.java
public class ServerRequests {
ProgressDialog progressDialog;
public static final int CONNECTION_TIMEOUT = 100 * 15;
public static final String SERVER_ADDRESS = "http://192.168.178.33:8080/";
public ServerRequests(Context context) {
progressDialog = new ProgressDialog(context);
progressDialog.setCancelable(false);
progressDialog.setTitle("Processing");
progressDialog.setMessage("Please wait...");
}
public void storeUserDataInBackground(User user, GetUserCallback userCallback) {
progressDialog.show();
new StoreUserDataAsyncTask(user, userCallback).execute();
}
public class StoreUserDataAsyncTask extends AsyncTask<Void, Void, Void> {
User user;
GetUserCallback userCallback;
public StoreUserDataAsyncTask(User user, GetUserCallback callBack) {
this.user = user;
this.userCallback = callBack;
}
@Override
protected Void doInBackground(Void... params) {
ArrayList<NameValuePair> dataToSend = new ArrayList<>();
dataToSend.add(new BasicNameValuePair("name", user.name));
dataToSend.add(new BasicNameValuePair("username", user.username));
dataToSend.add(new BasicNameValuePair("email", user.email));
dataToSend.add(new BasicNameValuePair("password", user.password));
HttpParams httpRequestParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpConnectionParams.setSoTimeout(httpRequestParams, CONNECTION_TIMEOUT);
HttpClient client = new DefaultHttpClient(httpRequestParams);
HttpPost post = new HttpPost(SERVER_ADDRESS + "Register.php");
try{
post.setEntity(new UrlEncodedFormEntity(dataToSend));
client.execute(post);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
progressDialog.dismiss();
userCallback.done(null);
super.onPostExecute(aVoid);
}
}
}
Alles anzeigen
PHP: Register.php
<?php
$con=mysqli_connect("localhost","root","admin","test");
$name = $_POST["name"];
$username = $_POST["username"];
$email = $_POST["email"];
$password = $_POST["password"];
$statement = mysqli_prepare($con, "INSERT INTO user (name, username, email, password) VALUES (?, ?, ?, ?) ");
mysqli_stmt_bind_parm($statement, "ssss", $name, $username, $email, $password);
mysqli_stmt_execute($statement);
mysqli_stmt_close($statement);
mysqli_close($con);
?>
Alles anzeigen