【问题标题】:Fail loading database data in Android Studio在 Android Studio 中加载数据库数据失败
【发布时间】:2018-07-17 09:17:16
【问题描述】:

我无法准确找到我的问题所在或原因但是每次尝试在数据库中搜索数据时,我的应用程序似乎都会崩溃。为什么会这样?再想一想,我想我可能搞砸了 MySingleton.class,但我不确定是怎么回事。

更新 它现在没有崩溃,但仍然没有从我的数据库中加载数据..

更新 2 我的网址中出现此错误

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 android.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 android.view.View.performClick(View.java:5714)
        at android.widget.TextView.performClick(TextView.java:10926)
        at android.view.View$PerformClick.run(View.java:22589)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7325)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

Main2Activity.class :

package co.quindio.sena.navigationdrawerejemplo;

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.*;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.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);
}
}

MySingleton.class:

package co.quindio.sena.navigationdrawerejemplo;

import android.content.Context;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.StringRequest;
import com.android.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;
    }
}

read.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);

【问题讨论】:

标签: java php android sql singleton


【解决方案1】:

使用前先初始化进度对话框。

pd = new ProgressDialog (this);

更新问题的答案:-

方法

mysqli_select_db(connection, dbname);

接受两个参数。所以就这样吧-

mysqli_select_db($conn, $database_name);

【讨论】:

  • 我一开始有一个进度对话框,它是一个连续的循环
  • 你正在使用 pd.hide();在您的 getSqlDetails() 方法中。所以,你必须先初始化它。
  • 好吧忘记了,现在的问题是我没有从我的数据库中获取任何数据。这就是为什么我有一个连续循环
  • 查看url的结果。它是否返回正确的响应?如果是,请在问题中添加。还要提及您在 logcat 中遇到的新错误。
  • 我收到警告:mysqli_select_db() 需要 2 个参数,1 个在 /storage/ssd1/078/5480078/public_html/denuncias/Connection.php 中给出的第 9 行错误...我将更新我的用我的 Connection.php 文件回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 1970-01-01
  • 2017-12-01
  • 2012-08-08
相关资源
最近更新 更多