Android Studio中java无法加载数据库数据
我找不到问题的确切位置或原因,但每次我的应用程序试图搜索数据库中的数据时,它似乎都会崩溃。为什么会发生这种情况?再想一想,我想我可能把迈辛格尔顿搞砸了。上课,但我不知道怎么做
更新 它现在不会崩溃,但仍然不会从我的数据库加载数据
更新2 我在我的URL中得到这个错误
Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in /storage/ssd1/078/5480078/public_html/denuncias/Connection.php on line 9
error
连接。php
<?php
$server_name = "localhost";
$user_name = "id5480078_denuncias";
$password = "smoothcriminal1";
$conn = mysqli_connect($server_name, $user_name, $password) or die ('Server '. mysql_error());
$database_name= 'id5480078_denuncias';
mysqli_select_db($database_name) or die('error');
mysqli_query("SET NAMES 'utf8'");
?>
UPDATE 3 Connection.php was fixed, but nnow the data isnt loading in the app.
错误日志:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: co.quindio.sena.navigationdrawerejemplo, PID: 25122
java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓.app.ProgressDialog.show()' on a null object reference
at co.quindio.sena.navigationdrawerejemplo.Main2Activity.getSqlDetails(Main2Activity.java:58)
at co.quindio.sena.navigationdrawerejemplo.Main2Activity.access$000(Main2Activity.java:25)
at co.quindio.sena.navigationdrawerejemplo.Main2Activity$1.onClick(Main2Activity.java:48)
at 安卓.view.View.performClick(View.java:5714)
at 安卓.widget.TextView.performClick(TextView.java:10926)
at 安卓.view.View$PerformClick.run(View.java:22589)
at 安卓.os.Handler.handleCallback(Handler.java:739)
at 安卓.os.Handler.dispatchMessage(Handler.java:95)
at 安卓.os.Looper.loop(Looper.java:148)
at 安卓.app.ActivityThread.main(ActivityThread.java:7325)
at java.lang.reflect.Method.invoke(Native Method)
at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
主要活动。类别:
package co.quindio.sena.navigationdrawerejemplo;
import 安卓.app.ProgressDialog;
import 安卓.content.Intent;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.util.Log;
import 安卓.view.View;
import 安卓.widget.*;
import com.安卓.volley.DefaultRetryPolicy;
import com.安卓.volley.Request;
import com.安卓.volley.RequestQueue;
import com.安卓.volley.Response;
import com.安卓.volley.VolleyError;
import com.安卓.volley.toolbox.StringRequest;
import com.安卓.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import co.quindio.sena.navigationdrawerejemplo.R;
public class Main2Activity extends AppCompatActivity {
TextView result;
EditText phone;
Button search;
String number;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
search = (Button)findViewById(R.id.button);
result = (TextView)findViewById(R.id.textView2);
phone = (EditText)findViewById(R.id.phone);
search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getSqlDetails();
}
});
}
private void getSqlDetails() {
String url= "https://luisalonsoriveraibarra.000webhostapp.com/denuncias/read.php";
StringRequest stringRequest = new StringRequest(Request.Method.GET,
url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
pd.hide();
try {
JSONArray jsonarray = new JSONArray(response);
for(int i=0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String id = jsonobject.getString("id");
String price = jsonobject.getString("price");
String name = jsonobject.getString("name");
String phone = jsonobject.getString("phone");
result.setText(" ID -"+id+"\n Price -"+price+"\n Name -"+name+"\n Phone -"+phone);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error != null){
Toast.makeText(getApplicationContext(), "Something went wrong.", Toast.LENGTH_LONG).show();
}
}
}
);
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
}
}
迈辛格尔顿。类别:
package co.quindio.sena.navigationdrawerejemplo;
import 安卓.content.Context;
import com.安卓.volley.RequestQueue;
import com.安卓.volley.toolbox.StringRequest;
import com.安卓.volley.toolbox.Volley;
/**
* Created by Luis Alonso on 17/7/2018.
*/
public class MySingleton {
private static MySingleton instance = null;
private RequestQueue mRequestQueue;
//a private constructor so no instances can be made outside this class
private MySingleton(Context context) {
mRequestQueue = Volley.newRequestQueue(context.getApplicationContext());
}
//Everytime you need an instance, call this
//synchronized to make the call thread-safe
public static synchronized MySingleton getInstance(Context applicationContext) {
if(instance == null)
instance = new MySingleton(applicationContext);
return instance;
}
//Initialize this or any other variables in probably the Application class
public void init(Context context) {}
public RequestQueue addToRequestQueue(StringRequest stringRequest) {
return mRequestQueue;
}
}
阅读。php:
include_once("Connection.php");
$query="SELECT * FROM data";
$result = mysqli_query($conn, $query);
while(($row = mysqli_fetch_assoc($result)) == true){
$data[]=$row;
}
echo json_encode($data);
# 1 楼答案
先初始化进度对话框,然后再使用它
最新问题的答案:
方法
接受两个参数。所以你要这样做-