将数据从数据库检索到我的应用程序(不工作)

时间:2017-10-27 22:30:00

标签: java android json database

所以我试图检索存储在我的数据库中的数据。

基本上用户输入汽车注册号和评级(1-5之间)和点击按钮。单击按钮后,我的代码将执行。从editext获取文本并发送到我的服务器。我保存了php文件,它将检查carregistration数字是否与数据库中的值匹配。如果匹配则检索存储在数据库中的当前评级。然后,该值显示在另一个活动上。 php文件工作正常。我尝试通过手动插入值。我遇到的问题是,当点击按钮时,不会发生。我已经使用此代码检索另一个应用程序的用户名和其他详细信息。

dataretrieve.java

public class DataRetrieve extends StringRequest {

private static final String REGISTER_REQUEST_URL = "https://dipteran-thin.000webhostapp.com/Login1.php";
private Map<String, String> params;

public DataRetrieve (String carreg, int rating, Response.Listener<String> listener) {

        super(Method.POST, REGISTER_REQUEST_URL, listener, null);
        params = new HashMap<>();
        params.put("carreg", carreg);
        params.put("rating", rating + "");



    }

    @Override
    public Map<String, String> getParams() {
        return params;
    }
}

Profile.java(用户输入carreg和评级)

public class Profile extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.profile);

    final EditText editText = (EditText) findViewById(R.id.carreg);
     final EditText editText1 = (EditText) findViewById(R.id.editText3);
    Button button = (Button) findViewById(R.id.button2);


    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String carreg = editText.getText().toString();
            final int rating = Integer.parseInt(editText1.getText().toString());

            // Response received from the server
            Response.Listener<String> responseListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");

                        if (success) {

                            int rating = jsonResponse.getInt("rating");

                            Intent intent = new Intent(Profile.this, UserAreaActivity.class);
                            intent.putExtra("rating", rating);
                            Profile.this.startActivity(intent);
                        } else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(Profile.this);
                            builder.setMessage("Login Failed")
                                    .setNegativeButton("Retry", null)
                                    .create()
                                    .show();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            };

            DataRetrieve loginRequest = new DataRetrieve(carreg, rating, responseListener);
            RequestQueue queue = Volley.newRequestQueue(Profile.this);
            queue.add(loginRequest);
        }});
    }
}

userareaactivity.java(检索时显示值)

public class UserAreaActivity extends AppCompatActivity {

@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user_area);


    final TextView etusername = (TextView) findViewById(R.id.textView2);
    final TextView etwelcome = (TextView) findViewById(R.id.textView);

    final TextView etuname = (TextView) findViewById(R.id.textView3);
    final Button Logout = (Button) findViewById(R.id.logout);

    //String Name = SharedPreferenceUtils.getName(this);
    //etwelcome.setText(Name);




   Intent intent = getIntent();
   username = intent.getIntExtra("rating", -1);
    etusername.setText(username + "");








    //Intent in = new Intent(getApplicationContext(), Messages.class);
    //in.putExtra("username", username);
    //UserAreaActivity.this.startActivity(in);

}
@Override
public void onBackPressed(){


}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)) {
        Intent intent = new Intent(UserAreaActivity.this, Messages.class);
        UserAreaActivity.this.startActivity(intent);

    }
    return true;
}

1 个答案:

答案 0 :(得分:1)

我从你的php页面收到错误:

<b>Parse error</b>:  syntax error, unexpected ']' in <b>/storage/ssd1/526/2972526/public_html/Login1.php</b> on line <b>8</b><br />

通过在JSON解析之上使用此行,可以在日志中看到响应的输出(在它抛出异常之前)

Log.d("Response", response.toString());

我将您的成功块复制到异常块中,它按预期工作,因此代码有效。我还会在捕获中发出某种警报,让你知道在测试完成后发生的故障。

旁注,将参数行更改为此...更清洁:

params.put("rating", String.valueOf(rating));