在我的应用程序中,单击注册按钮时我需要将数据插入到两个地方,一个是SQLite
,另一个是MySQL
(Xampp 服务器)。数据已成功添加到 SQLite
,但 MySQL
没有成功。
注册
private static final String REGISTER_URL = "http://192.168.107.115/Android/CRUD/register.php";
register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Password=password.getText().toString();
ConfirmPassword=confirmPassword.getText().toString();
sqlcon.open();
sqlcon.insertEntry(deviceName, Password); // insert to SQLite, no problem
register(deviceName, Password); // insert to MySQL
}
}
});
}
private void register(String name,String password) {
class RegisterUser extends AsyncTask<String, Void, String> {
ProgressDialog loading;
RequestHandler ruc = new RequestHandler();
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(Register.this, "Please Wait",null, true, true);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(getApplicationContext(),"AA"+s,Toast.LENGTH_LONG).show();
}
@Override
protected String doInBackground(String... params) {
HashMap<String, String> data = new HashMap<String,String>();
data.put("name",params[0]);
data.put("password",params[1]);
String result = ruc.sendPostRequest(REGISTER_URL,data);
return result;
}
}
RegisterUser ru = new RegisterUser();
ru.execute(name,password);
}
请求处理程序
public class RequestHandler {
public String sendPostRequest(String requestURL,
HashMap<String, String> postDataParams) {
URL url;
StringBuilder sb = new StringBuilder();
try {
//Initializing Url
url = new URL(requestURL);
//Creating an httmlurl connection
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//Configuring connection properties
conn.setReadTimeout(15000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
//Creating an output stream
OutputStream os = conn.getOutputStream();
//Writing parameters to the request
//We are using a method getPostDataString which is defined below
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();
if (responseCode == HttpsURLConnection.HTTP_OK) {
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
sb = new StringBuilder();
String response;
//Reading server response
while ((response = br.readLine()) != null){
sb.append(response);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
public String sendGetRequest(String requestURL){
StringBuilder sb =new StringBuilder();
try {
URL url = new URL(requestURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String s;
while((s=bufferedReader.readLine())!=null){
sb.append(s+"\n");
}
}catch(Exception e){
}
return sb.toString();
}
public String sendGetRequestParam(String requestURL, String id){
StringBuilder sb =new StringBuilder();
try {
URL url = new URL(requestURL+id);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String s;
while((s=bufferedReader.readLine())!=null){
sb.append(s+"\n");
}
}catch(Exception e){
}
return sb.toString();
}
private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
StringBuilder result = new StringBuilder();
boolean first = true;
for (Map.Entry<String, String> entry : params.entrySet()) {
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
}
return result.toString();
}
}
当点击注册按钮时,我看到 Toast
消息显示在 Register onPostExecute
中。
在RequestHandler中,sendGetRequest
,sendGetRequestParam
从未使用过! mysql check时,没有插入数据。
最佳答案
我不确定您为什么选择这种架构师。这是非常不安全的,因为如果有人反编译您的代码,他们可以找到您的在线数据库密码并轻松访问您的所有数据,甚至更糟的是删除所有内容。这就是为什么像 API
这样的词诞生的原因。您应该在服务器端创建一个页面,该页面接受 POST
请求并验证变量。然后将其添加到在线数据库并返回例如确认插入的 Json 字符串。
关于php - 没有数据从 Android 插入到 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488204/