Как сохранить байт из Java в байт в PostgreSQL?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как сохранить байт из Java в байт в PostgreSQL?

Сообщение Anonymous »

У меня возникла проблема при попытке вставить переменную типа «byte» в Java в переменную типа «bytea» в PostgreSQL.

Это моя таблица в postgresql:

Код: Выделить всё

CREATE TABLE mesa (
id_mesa              serial PRIMARY KEY,
tag                  varchar(50),
modelo               varchar(50),
menor_complemento    smallint NOT NULL,
peso_min             smallint NOT NULL,
peso_max             smallint NOT NULL,
som                  bytea NOT NULL,
rotina               bytea NOT NULL,
address64bits        bytea NOT NULL UNIQUE
);
мой код на Java следующий:

Код: Выделить всё

private Mesa mesa;
//construtor
public MesaDAO (Mesa mesa) {
this.mesa = mesa;
}
(...)
String stm = "INSERT INTO mesa(tag, modelo, menor_complemento, peso_min, "
+ "peso_max, som, rotina, address64bits) "
+ "VALUES(?,?,?,?,?,?,?,?)";
try {
pst = con.prepareStatement(stm);
pst.setString(1, mesa.getTag());
pst.setString(2, mesa.getModelo());
pst.setInt(3, mesa.getMenorComplemento());
pst.setInt(4, mesa.getPesoMin());
pst.setInt(5, mesa.getPesoMax());
pst.setByte(6, mesa.getSom());
pst.setByte(7, mesa.getRotina());
pst.setBytes(8, mesa.getAddress64Bits());
pst.executeUpdate();
(...)
Типы мезы:

Код: Выделить всё

public class Mesa{
private Integer idMesa;
private String tag;
private String modelo;
private Integer menorComplemento;
private Integer pesoMin;
private Integer pesoMax;
private byte som;
private byte rotina;
private byte[] address64Bits;
(...)
}
Затем, когда я пытаюсь вставить что-то, выдается исключение PSQLException, в котором говорится, что столбец «som» является «bytea», а выражение — «smallint». Я также думаю, что в следующих двух строках после этой будет такое же исключение SQLException.

Поэтому я не знаю, как это исправить, если кто-то сможет мне помочь, я буду рад!

Заранее спасибо,

РЕДАКТИРОВАНИЕ:

Спасибо, ребята, за помощь, я предоставлю решение здесь: измените переменную «som» и «rotina» в тип «byte[]», а затем используйте pst.getBytes(...) вместо pst.getByte(...).

Пояснение:

Я использую XBee (режим API), поэтому мне нужно отправить значение байта через последовательный порт. Итак, я просто проверял, совпадает ли то, что я получаю из базы данных, с тем, которое я туда вставил. В заключение я хочу знать, как восстановить байты из базы данных, чтобы отправить их через последовательный порт.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»