У меня есть несколько изображений в моей базе данных SQLite, но они хранятся как URI, я попытался использовать растровое изображение для их декодирования, затем сжать их как PNG или JPEG, а затем сохранить их на сервере. Но когда я снова получу их на своем рабочем столе Это означает, что что-то не так со значением BLOB-объекта, которое я загрузил. Я не уверен, что загруженные данные были данными BLOB-объекта или просто некоторыми байтами.
Вот код со сжатием от Ури до блоба, как я пытался:
public class DoLogin extends AsyncTask<String, String, String> {
String message = "";
Boolean isSuccess = false;
@Override
protected void onPreExecute() {
progressDialog.setMessage("Processing your order...");
System.out.println("post progress");
progressDialog.show();
}
@Override
protected String doInBackground(String... params) {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
Connection con = connectionClass.CONN();
if (con == null) {
message = "Error in connection";
} else {
System.out.println("background");
Cursor cursor2 = mDatabaseHelper.GetPath();
cursor2.moveToNext();
System.out.println(cursor2);
Cursor cursor = mDatabaseHelper.getDataOfTable();
cursor.moveToNext();
String id2 = getIntent().getStringExtra("storeid");
String id3 = getIntent().getStringExtra("specialtyid");
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Statement stmt1 = null;
ResultSet rs1 = null;
String nameid = getIntent().getStringExtra("nameid");
if(cursor2.getCount() > 0)
{
String querygetlastnum = "SELECT TOP 1 * FROM OrderMainData ORDER BY OrderID DESC";
Statement statement = con.createStatement();
ResultSet resultSet = statement.executeQuery(querygetlastnum);
if (resultSet.next()){
int addone = 1;
String oderid = resultSet.getString("OrderID");
addone += Integer.valueOf(oderid);
Bitmap bit = BitmapFactory.decodeFile(cursor2.getString(0));
bit.compress(Bitmap.CompressFormat.JPEG, 0, outputStream);
String getname = getIntent().getStringExtra("nameofcus");
ContentValues cv = new ContentValues();
String timeStamp = new SimpleDateFormat("dd/MM/yyyy").format(new Date());
cv.put("images", outputStream.toByteArray());
System.out.println(cv);
String queryinsertimage ="INSERT INTO OrderMainData values('"+id2+"','"+nameid+"','"+getname+"','"+addone+"','"+id2+"-"+nameid+"-"+addone+"','"+timeStamp+"','"+cursor.getString(2)+"','"+mDatabaseHelper.getPriceSum()+"','false','','false','','false','','false','','false','');"+
"INSERT INTO OrderAttachment values('"+id2+"-"+nameid+"-"+addone+"','"+cv+"');"+
"INSERT INTO OrderDetailData values('"+id2+"-"+nameid+"-"+addone+"','" + cursor.getString(3) + "','"+cursor.getString(2)+"','"+cursor.getString(0)+"','"+mDatabaseHelper.getPriceSum()+"')";
System.out.println(id2+"-"+nameid+"-"+id3);
stmt1 = con.createStatement();
stmt1.executeUpdate(queryinsertimage);
}
}else {
Toast.makeText(Listitemsbought.this,"Cursor null",Toast.LENGTH_LONG).show();
}
if (stmt1 != null) {
System.out.println("next");
Toast.makeText(Listitemsbought.this,"Order Completed Successfully",Toast.LENGTH_LONG).show();
//Intent intent = new Intent(Listitemsbought.this, order_done.class);
//startActivity(intent);
// finish();
isSuccess = true;
} else {
message = "Error 912:An error occurred come back later!";
isSuccess = false;
}
}
} catch (Exception ex) {
isSuccess = false;
ex.printStackTrace();
message = "Exceptions" + ex;
}
}
});
return message;
}
@Override
protected void onPostExecute (String r) {
System.out.println("khalas");
progressDialog.dismiss();
if (isSuccess) {
Toast.makeText(Listitemsbought.this, "Success", Toast.LENGTH_SHORT).show();
}
}
}
Есть идеи?