当我将图像从sqlite数据库传输到sqlserver 2005数据库时,byte []没有正确传输。
我将图像存储在sqlite中作为文本数据类型,当我从sqlite获取图像到android图像视图时,它显示正确。当我将它传输到sqlserver并在c#.net中获取时,它就无法显示。
我试试这段代码......
//生成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();
}
}
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
请帮助我,我很多但没有成功......对不起我的英语不好... 谢谢
答案 0 :(得分:0)
在sqlite中,您可以将其存储为blob格式,而不是将图像存储为文本。 将blob数据传输到服务器时,将blob数据更改为base64编码的字符串格式。在服务器端,将base64格式更改为字节到图像。它对我来说很好。