【问题标题】:how to get all image base64 string from sqlite?如何从 sqlite 获取所有图像 base64 字符串?
【发布时间】:2016-09-01 10:37:08
【问题描述】:

我的 sqlite 数据库中有 base64 字符串,我将所有这些记录发送到服务器。我面临的问题是,当我尝试将这些 base64 字符串发送到服务器时,它只发送第一条原始记录,然后为其他行发送 null。我调试我的代码,我第一次看到它检查我的 if 条件,但对于第二行它检查 else 条件。我该如何解决?

class async_SaveImage extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {

            SoapObject request = new SoapObject(namespacegetlistdata, method_name__image);

            cursorImage = db.rawQuery("select * from FieldTestDataFinal Where isSend ='N'", null);
            /*for(int i=0; i<cursor.getCount(); i++)
            {*/
            int k = 0;
            try {
                if (cursorImage.moveToFirst()) {

/*while (cursor.moveToNext())*/
                    do {
                        JSONArray arr = new JSONArray();
                        JSONObject jsonObject = new JSONObject();

                        //request.properties.clear();
                        if (k == 0) {
                            request.addProperty("fileByte1", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE1")));//add the parameters
                            request.addProperty("fileName1", cursorImage.getString(cursorImage.getColumnIndex("fileName1")));//add the parameters

                            request.addProperty("fileByte2", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE2")));//add the parameters
                            request.addProperty("fileName2", cursorImage.getString(cursorImage.getColumnIndex("fileName2")));//add the parameters

                            request.addProperty("fileByte3", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE3")));//add the parameters
                            request.addProperty("fileName3", cursorImage.getString(cursorImage.getColumnIndex("fileName3")));//add the parameters

                            request.addProperty("fileByte4", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE4")));//add the parameters
                            request.addProperty("fileName4", cursorImage.getString(cursorImage.getColumnIndex("fileName4")));//add the parameters

                            request.addProperty("fileByte5", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE5")));//add the parameters
                            request.addProperty("fileName5", cursorImage.getString(cursorImage.getColumnIndex("fileName5")));//add the parameters

                            request.addProperty("fileByte6", cursorImage.getString(cursorImage.getColumnIndex("SIGNATURE_CONSUMER")));//add the parameters
                            request.addProperty("fileName6", cursorImage.getString(cursorImage.getColumnIndex("fileName6")));//add the parameters
                            // request.addProperty("fileName", "123.jpeg");//add the parametershe parameters
                        } else {
                            request.setProperty(0, cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE1")));//add the parameters
                            request.setProperty(1, cursorImage.getString(cursorImage.getColumnIndex("fileName1")));//add the parameters

                            request.setProperty(0, cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE2")));//add the parameters
                            request.setProperty(1, cursorImage.getString(cursorImage.getColumnIndex("fileName2")));//add the parameters

                            request.setProperty(0, cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE3")));//add the parameters
                            request.setProperty(1, cursorImage.getString(cursorImage.getColumnIndex("fileName3")));//add the parameters

                            request.setProperty(0, cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE4")));//add the parameters
                            request.setProperty(1, cursorImage.getString(cursorImage.getColumnIndex("fileName4")));//add the parameters

                            request.setProperty(0, cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE5")));//add the parameters
                            request.setProperty(1, cursorImage.getString(cursorImage.getColumnIndex("fileName5")));//add the parameters

                            request.setProperty(0, cursorImage.getString(cursorImage.getColumnIndex("SIGNATURE_CONSUMER")));//add the parameters
                            request.setProperty(1, cursorImage.getString(cursorImage.getColumnIndex("fileName6")));//add the parameters
                        }
                        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//set soap version
                        envelope.setOutputSoapObject(request);
                        envelope.dotNet = true;
                        try {
                            HttpTransportSE androidHttpTransport = new HttpTransportSE(url_getlistdata);
                            androidHttpTransport.call(soap_action_uploadImage, envelope);  // this is the actual part that will call the webservice
                            //SoapPrimitive prim = (SoapPrimitive) envelope.getResponse();  // Get the SoapResult from the envelope body.
                            SoapObject response = (SoapObject) envelope.bodyIn;

                            //hideDialog();


                        } catch (Exception e) {
                            e.printStackTrace();
                            Log.d("myError -", String.valueOf(e));
                        }
                        k++;
                    } while (cursorImage.moveToNext());

                       /* object = new JSONObject();
                        object.put("data", arr);*/
                }
                cursorImage.close();


            } catch (Exception e) {

            }
            // }

            return resultSaveAllData;

        }

        @Override
        protected void onPostExecute(String result1) {
            try {

            } catch (Exception e) {

            }
            super.onPostExecute(result1);

        }
    }

【问题讨论】:

  • 是的,我正在替换其他条件下的属性,但第一次它检查 if 条件,但第二次为什么它检查 else ?我在 if else 中做错了这就是它检查 else 的原因。
  • 那么我应该改变什么?
  • 我的要求是假设我的 sqlite 中有三条记录,但它只将第一条记录发送到服务器。为什么它不发送所有记录?
  • 在单个请求中?
  • 不是在单个请求中。如果我有 3 条记录,我想调用我的 api 3 次。

标签: android sqlite cursor


【解决方案1】:

试试这个,

@Override
protected String doInBackground(String... params) {
    StringBuilder result = new StringBuilder();

    cursorImage = db.rawQuery("select * from FieldTestDataFinal Where isSend ='N'", null);
    for (cursorImage.moveToFirst(); !cursorImage.isAfterLast(); cursorImage.moveToNext()) {
        result.append(sendRequest(cursorImage));
    }

    return result.toString();
}

private String sendRequest(Cursor cursorImage){
    String responseDump = "";
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//set soap version
    envelope.dotNet = true;

    SoapObject request = new SoapObject(namespacegetlistdata, method_name__image);

    request.addProperty("fileByte1", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE1")));//add the parameters
    request.addProperty("fileName1", cursorImage.getString(cursorImage.getColumnIndex("fileName1")));//add the parameters

    request.addProperty("fileByte2", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE2")));//add the parameters
    request.addProperty("fileName2", cursorImage.getString(cursorImage.getColumnIndex("fileName2")));//add the parameters

    request.addProperty("fileByte3", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE3")));//add the parameters
    request.addProperty("fileName3", cursorImage.getString(cursorImage.getColumnIndex("fileName3")));//add the parameters

    request.addProperty("fileByte4", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE4")));//add the parameters
    request.addProperty("fileName4", cursorImage.getString(cursorImage.getColumnIndex("fileName4")));//add the parameters

    request.addProperty("fileByte5", cursorImage.getString(cursorImage.getColumnIndex("METER_IMAGE5")));//add the parameters
    request.addProperty("fileName5", cursorImage.getString(cursorImage.getColumnIndex("fileName5")));//add the parameters

    request.addProperty("fileByte6", cursorImage.getString(cursorImage.getColumnIndex("SIGNATURE_CONSUMER")));//add the parameters
    request.addProperty("fileName6", cursorImage.getString(cursorImage.getColumnIndex("fileName6")));//add the parameters

    envelope.setOutputSoapObject(request);

    HttpTransportSE androidHttpTransport = new HttpTransportSE(url_getlistdata);
    androidHttpTransport.debug = true;    
    try {
        androidHttpTransport.call(soap_action_uploadImage, envelope);
        responseDump = transport.responseDump;
    } catch (Exception e) {
        e.printStackTrace();
        Log.d("myError -", String.valueOf(e));
    }
    return responseDump;
}

【讨论】:

  • 感谢 Neeraj 的回复,但不幸的是它不起作用。
  • 有什么问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多