有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    先初始化进度对话框,然后再使用它

    pd = new ProgressDialog (this);
    

    最新问题的答案:

    方法

    mysqli_select_db(connection, dbname);
    

    接受两个参数。所以你要这样做-

    mysqli_select_db($conn, $database_name);