PostgreSQL에서 "bytea"유형의 변수에 "byte"유형의 변수를 Java에 삽입하려고하면 문제가 발생합니다.Java에서 바이트를 PostgreSQL의 bytea에 저장하는 방법은 무엇입니까?
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;
(...)
}
, 내가하려고 할 때
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
);
자바에서 내 코드는 다음과 같다 :
이것은 PostgreSQL을 내 테이블 뭔가를 삽입하려면 PSQLException을 throw합니다. "som"열은 "bytea"이지만 표현은 "smallint"입니다. 또한 그 다음 두 줄에 동일한 SQLException이있을 것이라고 생각합니다.
그래서 어떻게 고칠 수 있는지 누군가가 나를 도울 수 있다면 기쁠 것입니다!
는, 사전에 감사편집 : 저를 도와 주셔서
고마워, 내가 여기에 솔루션을 제공 할 것입니다 : 변수를 변경 "솜"와 "rotina"을 "바이트 []" pst.getByte (...) 대신 pst.getBytes (...)를 사용하십시오. 내가 XBee (API 모드)를 사용하고
, 그래서 포트 시리얼을 통해 바이트 값을 보낼 필요가 :
명확히. 그래서 나는 데이터베이스에서 얻는 것이 내가 거기에 삽입 한 것과 동일한 가치인지를 확인하고있었습니다. 결론적으로, 직렬 포트를 통해 데이터를 보내려면 데이터베이스에서 바이트를 복구하는 방법을 알고 싶습니다.
당신은 객체 메사 PLS의 유형을 표시 할 수 있습니다. – Diversity
'som'이'byte' 인 경우 왜'byte []'로 저장하기를 원합니까 (이것은'bytea'가 무엇입니까?)? 자바 변수에서'som'은'integer' 타입의 컬럼이어야한다. –
정말로 byte byte를'BLOB'으로 저장해야한다면 ('bytea'가 무엇인지),'setBytes ()'setByte()가 아닌'byte []'를 전달한다 –