无法将图像从sqlite发送到sqlserver

时间:2013-11-27 05:05:21

标签: c# android sql-server sqlite sql-server-2005

当我将图像从sqlite数据库传输到sqlserver 2005数据库时,byte []没有正确传输。

我将图像存储在sqlite中作为文本数据类型,当我从sqlite获取图像到android图像视图时,它显示正确。当我将它传输到sqlserver并在c#.net中获取时,它就无法显示。

我试试这段代码......

首先我将图像存储在sqlite中。

//生成byte []

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {

        File imgFile = new File(Environment.getExternalStorageDirectory(),
                "/MyImages/");

        photo = BitmapFactory.decodeFile(imgFile.getAbsolutePath() + "/"
                + Const.dbSrNo + "image.jpg");

        imageView2.setImageBitmap(photo);


        ByteArrayOutputStream bao = new ByteArrayOutputStream(1000);

        photo.compress(Bitmap.CompressFormat.PNG, 90, bao);

        Toast.makeText(camerainfo.this, "a result" + photo, 20).show();
        // save image as byte

        byteImage_photo = bao.toByteArray();
    }
         }

//我使用此代码

发送给sqlite
boolean val = genHelper.insertCameraData(byteImage_photo);

insertCameraData(...) is my methos to insert image in sqlite

//我使用下面的代码将它发送到sqlserver

=============================================== ==========

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
             HttpTransportSE androidHttpTransport = new HttpTransportSE(
             URL, 70000);

              request.addProperty("strQuery",
              "exec SP_SAVE_androidSURVEYcamerainfo '" + Const.dbSrNo +
              "','" + byteImage_photo + "','" + lat_s + "','" + lon_s +
              "','" + date_s + "','" + time_s + "'");

              Toast.makeText(camerainfo.this,request.getProperty(0).toString
              (), 30).show();

              Log.d("RESPONSE", "strQuery :" +
              request.getProperty(0).toString()); Log.d("RESPONSE",
              "step 2"); SoapSerializationEnvelope envelope = new
              SoapSerializationEnvelope( SoapEnvelope.VER11);
              envelope.dotNet = true;
              envelope.setOutputSoapObject(request); Log.d("RESPONSE",
              "step 3"); androidHttpTransport.call(SOAP_ACTION, envelope);
              Log.d("RESPONSE", "step 4");

             Toast.makeText(camerainfo.this, "inserted data.",
              30).show();

//上面的代码存储以下数据

//我的sqlserver中的列为varbinary数据类型

0x5B004200400034003100640066003700320032003800

请帮助我,我很多但没有成功......对不起我的英语不好... 谢谢

1 个答案:

答案 0 :(得分:0)

在sqlite中,您可以将其存储为blob格式,而不是将图像存储为文本。 将blob数据传输到服务器时,将blob数据更改为base64编码的字符串格式。在服务器端,将base64格式更改为字节到图像。它对我来说很好。