Вставьте изображения на сервер sql и загрузите его - PullRequest
0 голосов
/ 18 июня 2020

Я хочу добавить несколько изображений на свой SQL сервер. Моя проблема связана с вставкой или получением кода изображения?

На данный момент изображение, которое я извлекаю, пустое.

Вот мой код для вставки изображения:

else {
    DatabaseHelper mDatabaseHelper = new DatabaseHelper(MainActivity.this);
    Cursor cursor2 = mDatabaseHelper.GetPath();
    while (cursor2.moveToNext()) {

        Bitmap bitmap = BitmapFactory.decodeFile(cursor2.getString(0));
        ByteArrayOutputStream blob = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 100 /* Ignored for PNGs */ , blob);
        byte[] bitmapdata = blob.toByteArray();
        String id = getIntent().getStringExtra("id");
        String query = "INSERT INTO StoresData VALUES('" + arabic + "','" + english + "','1','1','1','1','1','','" + lat + "','" + longi + "','" + mob + "','','','','','','','','0','','','','" + bitmapdata + "','" + user + "','" + passwords + "','0',NULL,'" + id + "')";
        Statement stmt = con.createStatement();
        stmt.executeUpdate(query);

        Cursor cursor = mDatabaseHelper.DeleteDataOfTableImagesAr();
        while (cursor.moveToNext()) {
            Toast.makeText(MainActivity.this, "Deleted images", Toast.LENGTH_LONG).show();
        }
    }
}

Получить изображение обратно:

Blob blob = parkingList.get(position).getStoreicon();
if (blob != null) {
    byte[] byteArray = new byte[0];
    try {
        int length = (int) blob.length();
        byteArray = blob.getBytes(1, length);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
    intent.putExtra("storeicon", bm);
} else {

}

И да, я получаю изображение в виде списка.

Получение и получение изображения выполняется в двух разных приложениях, поэтому я этого не сделал Не используйте SQLite.

1 Ответ

0 голосов
/ 19 июня 2020

Я не могу добавить комментарий (слишком низкая репутация), но я думаю, что

    int length = (int) blob.length();
    byteArray = blob.getBytes(1, length);

lenght в порядке, как вы сказали, .getBytes начинаются с 1 до длины и сохраняют его в массив ... Но:

Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length)

Не должно быть

Bitmap bm = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length - 1)

? Если длина начинается с 1, массивы с 0.

...