如何从表中下载数据,从中获取值并使用该值下载另一个表?

时间:2018-09-10 18:02:58

标签: java android android-studio android-room

我尝试下载服务器上的数据,将其插入我的SQLITE数据库中,从该表中获取一个值,然后查询服务器以从另一个表中获取数据。 在这里,我向您展示代码。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bills);

        ImageView search = findViewById(R.id.iv_search);
        facturaId = findViewById(R.id.et_facturaid);


        mContext = getApplicationContext();
        activity = this;



        database = AppDatabase.getAppDatabase(getApplicationContext());

        search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                new Thread(() -> {
                    // Code here
                    getVenta(facturaId.getText().toString());
                }).start();

                new Thread(() -> {
                    // Code here
                   getVentaD(String.valueOf(database.ventaDao().getVenta().getID()));
                }).start();

            }
        });

    }

//Method1
public void getVenta(final String id) {



        new Thread(() -> {

            // Code here
            database.ventaDao().deleteVenta();
        }).start();



        final String link = AppConfig.getVenta() + "/"+ id;

        StringRequest postRequest = new StringRequest(Request.Method.GET, link,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        //      Log.d("Response", response);


                        if (!response.equals("") && !response.equals("null") && !response.equals("[]")) {


                            try {

                                final JSONArray array = new JSONArray(response);
                                if (array.length() > 0) {
                                    for (int i = 0; i < array.length(); i++) {

                                        final JSONObject object = array.getJSONObject(i);



                                                try {

                                                    AsyncTask.execute(new Runnable() {
                                                        @Override
                                                        public void run() {
                                                            database.runInTransaction(() ->{
                                                                try {
                                                                    database.ventaDao().addVenta(new Venta(
                                                                            object.getInt("ID"),
                                                                            object.getString("Empresa"),
                                                                            object.getString("Mov"),
                                                                            object.getString("MovID"),
                                                                            object.getString("FechaEmision"),
                                                                            object.getString("Concepto"),
                                                                            object.getString("Usuario"),
                                                                            object.getString("Proyecto"),
                                                                            object.getString("ClienteID"),
                                                                            object.getInt("EnviarA"),
                                                                            object.getString("Agente"),
                                                                            object.getString("Condicion"),
                                                                            object.getInt("Sucursal"),
                                                                            object.getDouble("Importe")));
                                                                } catch (JSONException e) {
                                                                    e.printStackTrace();
                                                                }

                                                            });
                                                        }
                                                    });





                                                } catch (Exception ex) {

                                                    Log.e("", "error3 => " + ex.toString());
                                                }

                                    }

                                    Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_LONG).show();


                                }

                            } catch (Exception ex) {
                                Toast.makeText(getApplicationContext(), "error1 => " + ex.toString(), Toast.LENGTH_LONG).show();
                                Log.e("", "error1 => " + ex.toString());

                            }


                        }


                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getApplicationContext(), "error => " + error.toString(), Toast.LENGTH_LONG).show();
                        Log.e("", "error => " + error.toString());

                    }
                }
        ) {//here before semicolon ; and use { }.
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                final String token = "Bearer " + "dd";
                headers.put("Content-Type", "application/json");
                headers.put("Authorization", token);
                return super.getHeaders();
            }

            @Override
            public String getBodyContentType() {
                return super.getBodyContentType();
            }
        };

        postRequest.setRetryPolicy(new DefaultRetryPolicy(
                40000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        VolleySingleton.getInstance(getApplicationContext()).addToRequestque(postRequest);
    }


//Method2
public void getVentaD(final String id) {


        new Thread(() -> {

            // Code here
            database.ventaDDao().deleteVentaD();
        }).start();

        final String link = AppConfig.getVentaD() + "/"+ id;

        StringRequest postRequest = new StringRequest(Request.Method.GET, link,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        //      Log.d("Response", response);


                        if (!response.equals("") && !response.equals("null") && !response.equals("[]")) {


                            try {

                                final JSONArray array = new JSONArray(response);
                                if (array.length() > 0) {
                                    for (int i = 0; i < array.length(); i++) {

                                        final JSONObject object = array.getJSONObject(i);

                                                try {

                                                    AsyncTask.execute(new Runnable() {
                                                        @Override
                                                        public void run() {
                                                            database.runInTransaction(() -> {

                                                                try {
                                                                    database.ventaDDao().addVentaD(new VentaD(
                                                                            object.getInt("ID"),
                                                                            object.getString("Almacen"),
                                                                            object.getString("Articulo"),
                                                                            object.getDouble("Precio"),
                                                                            object.getDouble("PrecioSugerido"),
                                                                            object.getDouble("Costo"),
                                                                            object.getString("Unidad"),
                                                                            object.getDouble("Cantidad"),
                                                                            object.getDouble("CantidadInventario"),
                                                                            object.getString("Agente"),
                                                                            object.getInt("EnviarA"),
                                                                            object.getDouble("UltimoCosto"),
                                                                            object.getDouble("Preciolista")));
                                                                } catch (JSONException e) {
                                                                    e.printStackTrace();
                                                                }

                                                            });
                                                        }
                                                    });




                                                } catch (Exception ex) {

                                                    Log.e("", "error3 => " + ex.toString());
                                                }

                                    }

                                    Toast.makeText(getApplicationContext(), "OK", Toast.LENGTH_LONG).show();

                                }

                            } catch (Exception ex) {
                                Toast.makeText(getApplicationContext(), "error1 => " + ex.toString(), Toast.LENGTH_LONG).show();
                                Log.e("", "error1 => " + ex.toString());

                            }


                        }


                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(getApplicationContext(), "error => " + error.toString(), Toast.LENGTH_LONG).show();
                        Log.e("", "error => " + error.toString());

                    }
                }
        ) {//here before semicolon ; and use { }.
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                final String token = "Bearer " + "dd";
                headers.put("Content-Type", "application/json");
                headers.put("Authorization", token);
                return super.getHeaders();
            }

            @Override
            public String getBodyContentType() {
                return super.getBodyContentType();
            }
        };

        postRequest.setRetryPolicy(new DefaultRetryPolicy(
                40000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        VolleySingleton.getInstance(getApplicationContext()).addToRequestque(postRequest);
    }

---------崩溃开始 facturasapp E / Android运行时:致命例外:线程8     流程:facturasapp,PID:24606      java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'int facturasapp.data.models.Venta.getID()'         在facturasapp.activity.user.BillsActivity $ 1.lambda $ onClick $ 1 $ BillsActivity $ 1(BillsActivity.java:83)处         at facturasapp.activity.user.BillsActivity $ 1 $$ Lambda $ 1.run(来源不明)         在java.lang.Thread.run(Thread.java:762)

我注意到,当我尝试查询第一个表的ID时,尚未将其插入,因此给我带来了一个空答案。我该如何做(如果可能的话),以便能够插入然后查询以获取需要查询同一代码块中第二个表的值?

谢谢...

0 个答案:

没有答案