簡體   English   中英

如何將字節數組存儲到Java中的SQL Server varbinary(MAX)字段中?

[英]How to store a byte array into a SQL Server varbinary(MAX) field in Java?

我有一個Android應用程序,它以字節數組形式接收圖像,我想將其保存在SQL Server數據庫的varbinary(MAX)字段中。

我正在使用jtds並嘗試運行:

Statement statement = dbConnection.createStatement();
ResultSet result = statement.executeQuery(
   "INSERT INTO TB_IMAGE (ID, IMAGE) VALUES (" + image.getId() + "," + image.getImage() + ")")

我可以執行查詢,但是會引發以下錯誤:

java.sql.SQLException: Invalid SQL statement or JDBC escape, terminating ']' not found.

然后我嘗試了:

String query = ("INSERT INTO TB_IMAGE (ID, IMAGE) VALUES (" + image.getId() + ", ?)");
PreparedStatement preparedStatement = dbConnection.prepareStatement(query);
preparedStatement.setBinaryStream(1, image.getImage());

但這需要java.io.InputStream,並且代碼無法編譯。

供參考,這是我的Image類:

public class Image {
    private int Id;
    private byte[] Image;

    public Image (int id) { this.Id = id; }

    public int getId() { return Id; }
    public void setId(int id) { Id = id; }

    public byte[] getImage() { return Image; }
    public void setImage(byte[] image) { Image = image; }
}

如何將圖像(byte [])保存在varbinary(MAX)字段中?

將字節數組轉換為十六進制字符串,並在SQL中提供未引用的十六進制字符串。 像這樣:

insert into tb_image(id, image) values(100, 0xaabbccdd11223344)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM