【发布时间】:2017-08-18 14:35:33
【问题描述】:
我正在尝试通过 json 从在线数据库(MySql)中获取数据,并希望将其显示为 ListView。到目前为止我做了什么:
Downloader.java
public class Downloader extends AsyncTask<Void,Integer,String> {
Context c;
String address;
ListView lv;
ProgressDialog pd;
public Downloader(Context c, String address, ListView lv) {
this.c = c;
this.address = address;
this.lv = lv;
}
//B4 JOB STARTS
@Override
protected void onPreExecute() {
super.onPreExecute();
pd=new ProgressDialog(c);
pd.setTitle("Fetch Data");
pd.setMessage("Fetching Data...Please wait");
pd.show();
}
@Override
protected String doInBackground(Void... params) {
String data=downloadData();
return data;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
pd.dismiss();;
if(s != null)
{
Parser p=new Parser(c,s,lv);
p.execute();
}else
{
Toast.makeText(c,"Unable to download data",Toast.LENGTH_SHORT).show();
}
}
private String downloadData()
{
//connect and get a stream
InputStream is=null;
String line =null;
try {
URL url=new URL(address);
HttpURLConnection con= (HttpURLConnection) url.openConnection();
is=new BufferedInputStream(con.getInputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(is));
StringBuffer sb=new StringBuffer();
if(br != null) {
while ((line=br.readLine()) != null) {
sb.append(line+"n");
}
}else {
return null;
}
return sb.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(is != null)
{
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}
MainActivity.java
public class MainActivity extends Activity {
String url="http://bookvilla.esy.es/book.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView lv= (ListView) findViewById(R.id.lv);
final Downloader d=new Downloader(this,url,lv);
d.execute();
}
}
当我运行该应用程序时,我收到一条提示消息“无法下载数据”,该消息位于 Downloader.java 类的第 35 行。所以我猜测我从数据库中获取的数据是空的……但是为什么会这样……
$con = mysqli_connect($host,$u_name,$pwd,$db) or die('无法连接'); if(mysqli_connect_error($con)) { echo "连接失败 数据库".mysqli_connect_error();
}
$query = mysqli_query($con,"SELECT * FROM playerstb");如果($查询){
while($row=mysqli_fetch_array($query)) { $flag[] = $row;
} 打印(json_encode($flag)); } mysqli_close($con);
上面是我的php文件
【问题讨论】:
-
没人帮忙吗?
-
private String downloadData()甚至被调用了吗?我不这么认为。我想你忘了覆盖public void execute()方法
标签: java php android mysql database