我正在尝试为我的 Android 应用程序制作一个注册页面。 我已经成功创建了一个登录页面,现在正在尝试让注册页面正常工作。
我已成功将通过注册页面发送的数据获取到数据库中。我正在使用 php 脚本将数据传输到我的 mysql 数据库中。
但是每次我注册时,它都会发送数据并给出回显,表明用户名/邮件已经存在。
它还在 Java 中显示此错误:SingleClientConnManager 的使用无效:连接仍在分配。
我已经尝试解决这个问题几个小时了,但找不到任何有帮助的东西。
这是我的数据库:
id - primary key AI
mail - unique
password
username - unique
这是我的 php 脚本
<?php
$hostname_memolink = "localhost";
$database_memolink = "memolink";
$username_memolink = "android";
$password_memolink ="f3.W2TmM}8yO";
$memolink = mysql_connect($hostname_memolink, $username_memolink, $password_memolink) or trigger_error(mysql_error(), E_USER_ERROR);
mysql_select_db($database_memolink, $memolink);
$mail = $_POST['mail'];
$password = $_POST['password'];
$username = $_POST['username'];
if (trim($password) == "" or trim($username) == "" or trim($mail) == "")
{
echo "variables are null";
exit;
}
else
{
$resultUsername = mysql_query("SELECT * FROM tbl_user WHERE username='$username'");
$resultMail = mysql_query("SELECT * FROM tbl_user WHERE mail='$mail'");
$num_rows_username = mysql_num_rows($resultUsername);
$num_rows_mail = mysql_num_rows($resultMail);
if ($num_rows_username >= 1 && $num_rows_mail >= 1) {
echo "username or email already exists";
die();
}
else
{
mysql_query("INSERT INTO tbl_user (id, mail, password, username) VALUES('', '$mail', '$password', '$username')") or die(mysql_error());
echo "registration complete";
}
}
?>
这是我的 Java 方法,它将数据发送到我的 php 文件:
HttpPost httpPost;
StringBuffer buffer;
HttpResponse response;
HttpClient httpClient;
List<NameValuePair> registerData;
public void register(){
try{
httpClient = new DefaultHttpClient();
httpPost = new HttpPost("http://www.memo-link.be/php/register.php");
registerData = new ArrayList<NameValuePair>(2);
EditText mailBox = (EditText) findViewById(R.id.mail_box);
EditText userBox = (EditText) findViewById(R.id.username_box);
EditText passBox = (EditText) findViewById(R.id.password_box);
String mail = mailBox.getText().toString();
String username = userBox.getText().toString();
String password = passBox.getText().toString();
registerData.add(new BasicNameValuePair("mail", mail));
registerData.add(new BasicNameValuePair("username", username));
registerData.add(new BasicNameValuePair("password", password));
httpPost.setEntity(new UrlEncodedFormEntity(registerData));
response = httpClient.execute(httpPost); //send data to Internet
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String response = httpClient.execute(httpPost, responseHandler);
System.out.println("Response : " + response.toString());
if (response.equalsIgnoreCase("username or email already exists")){
runOnUiThread(new Runnable(){
public void run(){
dialog.dismiss();
}
});
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(250);
Toast toast = Toast.makeText(RegisterActivity.this, "Username already exists!", Toast.LENGTH_SHORT);
toast.show();
}else if(response.toString().equalsIgnoreCase("username or email already exists")){
runOnUiThread(new Runnable(){
public void run(){
dialog.dismiss();
}
});
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(250);
Toast toast = Toast.makeText(RegisterActivity.this, "Mail address already in use!", Toast.LENGTH_SHORT);
toast.show();
}else if(response.toString().equalsIgnoreCase("registration complete")){
runOnUiThread(new Runnable(){
public void run(){
Toast toast = Toast.makeText(RegisterActivity.this, "Registration Succesfull", Toast.LENGTH_SHORT);
toast.show();
}
});
startActivity(new Intent(RegisterActivity.this, DashboardActivity.class));
}
runOnUiThread(new Runnable(){
public void run(){
dialog.dismiss();
}
});
}catch (Exception e){
dialog.dismiss();
System.out.println("Exception : " + e.getMessage());
}
}
提前致谢
最佳答案
如果这对您有帮助,请查看此内容。如果您需要更多帮助,请告诉我们。
Android: Invalid use of SingleClientConnManager: connection still allocated
此外,在您的代码中,您执行查询两次,第一次正常执行,一旦获得第二次查询(因为您的数据已经插入),就满足条件并打印错误消息。希望这会有所帮助。
关于java - 我的数据进入我的 MySQL 数据库,但它仍然给出重复条目错误,而我在 java 中收到错误 SingleClientConnManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20034090/