从android应用程序获取数据并使用php将其存储在sql数据库中
Posted
技术标签:
【中文标题】从android应用程序获取数据并使用php将其存储在sql数据库中【英文标题】:get data from android app and store it in sql database using php 【发布时间】:2017-01-29 11:27:09 【问题描述】:我想从我的 android 应用程序中获取数据并放入 phpmyadmin(wampp 服务器)中的 sql 数据库。 这是我的代码:
package com.example.sara.myapplication;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class addupdel_activity extends AppCompatActivity implements View.OnClickListener
private EditText name;
private EditText author;
private EditText iisbn;
private final String REGISTER_URL = "http://localhost/android/create_book.php";
private Button Aggiungi;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_addupdel_activity);
name = (EditText) findViewById(R.id.nome);
author= (EditText) findViewById(R.id.autore);
iisbn = (EditText) findViewById(R.id.isbn);
Aggiungi = (Button) findViewById(R.id.Aggiungi);
Aggiungi.setOnClickListener(this);
@Override
public void onClick(View v)
if(v == Aggiungi)
registerUser();
private void registerUser()
String nome = name.getText().toString().trim().toLowerCase();
String autore = author.getText().toString().trim().toLowerCase();
String isbn= iisbn.getText().toString().trim().toLowerCase();
register(nome,autore,isbn);
private void register(String nome, String autore, String isbn)
String urlSuffix = "?nome=nome&autore=autore&isbn=isbn";
class RegisterUser extends AsyncTask<String, Void, String>
ProgressDialog loading;
@Override
protected void onPreExecute()
super.onPreExecute();
loading = ProgressDialog.show(addupdel_activity.this, "Please Wait",null, true, true);
@Override
protected void onPostExecute(String s)
super.onPostExecute(s);
loading.dismiss();
Toast.makeText(getApplicationContext(),s, Toast.LENGTH_LONG).show();
@Override
protected String doInBackground(String... params)
String s = params[0];
BufferedReader bufferedReader = null;
try
URL url = new URL(REGISTER_URL+s);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String result;
result = bufferedReader.readLine();
return result;
catch(Exception e)
return null;
RegisterUser ru = new RegisterUser();
ru.execute(urlSuffix);
php file
result:
谁能告诉我我在哪里犯错了?为什么它不在 sql 中存储值。
提前致谢。
【问题讨论】:
【参考方案1】:您没有使用传递给register
方法的值。更改此行:
String urlSuffix = "?nome=nome&autore=autore&isbn=isbn";
到:
String urlSuffix = "?nome="+nome+"&autore="+autore+"&isbn="+isbn";
然后将doInBackground
方法改成:
int responseCode = 0;
try
URL url = new URL(REGISTER_URL+s);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// optional default is GET
con.setRequestMethod("GET");
responseCode = con.getResponseCode();
if (responseCode == 200)
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null)
response.append(inputLine);
in.close();
return response.toString();
catch (Exception ex)
Log.i("CaughtException", ex.getMessage());
return "Error Found with Response Code = " + responseCode;
【讨论】:
它给了我这个错误:错误:找不到符号变量 responseCode 只需在try
块之前将其初始化为 int responseCode = 0
;
doinbackground 中缺少 return 语句。
它不断给我发现错误,响应代码 = 0;
不要在您的REGISTER_URL
中使用localhost
,而是使用您系统的当前IpAddress
。喜欢:"http://192.168.0.1/android/create_book.php";
【参考方案2】:
您确定此链接有效吗?
http://localhost/android/create_book.php?nome=nome&autore=autore&isbn=isbn
尝试在你的浏览器中触发 url,如果它返回一个真实的结果,那么我认为错误是在你的 doInBackground 任务上发生的。
因为我从不尝试使用你的方法连接数据库,但我可以建议你使用 okHttpClient3 库来代替数据库连接
【讨论】:
以上是关于从android应用程序获取数据并使用php将其存储在sql数据库中的主要内容,如果未能解决你的问题,请参考以下文章
如何从 mysql 数据库中获取数据并使用 PHP 将其发送给用户? [关闭]
在 Android Studio 中从用户那里获取图片并进行编码,以便可以将其存储在数据库中