Поддерживает ли CodeName One MYSQL BLOB с использованием интерфейса базы данных RESTful? - PullRequest
1 голос
/ 14 июня 2019

Используя расширение веб-базы данных CodenameOne, я могу заставить базовые поля SQL работать со строками и числами, но не с большими двоичными объектами BLOB. Я следую инструкциям здесь: https://www.codenameone.com/blog/connecting-to-a-mysql-database-part-2.html Поддерживаются ли BLOB-объекты CodenameOne? Если так, то как ты это делаешь? Я не могу найти примеры, которые используют типы BLOB.

Я пытался использовать длинные строки, и с MarianaDB можно получить размер строки до 512 КБ, но мне нужно хранить изображения, которые могут быть больше.

MariaDB [(none)]> use tsg; фотографии desc; База данных изменена + ------------ + ------------------ + ------ + ----- + ---- ----- + ---------------- + | Поле | Тип | Null | Ключ | По умолчанию | Extra | + ------------ + ------------------ + ------ + ----- + ---- ----- + ---------------- + | id | int (10) без знака | НЕТ | PRI | NULL | auto_increment | | player_id | int (11) | НЕТ | | NULL | | | tree_id | int (11) | НЕТ | | NULL | | | фот_тип | длинный текст | НЕТ | | NULL | | | изображение | капля | ДА | | NULL | | + ------------ + ------------------ + ------ + ----- + ---- ----- + ---------------- + 5 рядов в наборе (0,001 сек)

Когда я добавляю запись без блоба, она работает:

    m.put("playerId", "1");
    m.put("treeId", "2");
    m.put("photoType", "front");
    m.put("image", null);

    client.create(m, res -> {
        System.out.println(m);
        System.out.println("create result = " + res);
    });

выходы: {treeId = 2, image = null, photoType = front, playerId = 1} создать результат = true

Но когда я пытаюсь добавить блоб, это не так:

    m.put("playerId", "1");
    m.put("treeId", "2");
    m.put("photoType", "front");
    byte bytes[] = new byte[100];
    m.put("image", bytes);

    client.create(m, res -> {
        System.out.println(m);
        System.out.println("create result = " + res);
    });

выходы:

{treeId = 2, image = [B @ 5968c8cb, photoType = front, playerId = 1} создать результат = false

Помощь! Я неправильно использую большие двоичные объекты, или CN1 не поддерживает большие двоичные объекты?

Единственное сообщение об ошибке от результата создания, являющегося ложным.

1 Ответ

1 голос
/ 15 июня 2019

В настоящее время он не имеет встроенной поддержки.Вы можете использовать MultipartRequest для отправки двоичных данных на сервер.

...