java - 如何将字节数组存储到 Java 中的 SQL Server varbinary(MAX) 字段中?
问题描述
我有一个以字节数组形式接收图像的 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; }
}
如何在 varbinary(MAX) 字段中保存图像,一个字节 []?
解决方案
将字节数组转换为十六进制字符串,并在 SQL 中提供未加引号的十六进制字符串。像这样:
insert into tb_image(id, image) values(100, 0xaabbccdd11223344)
推荐阅读
- mapbox - Mapbox 覆盖不跨越本初子午线
- reactjs - mern 堆栈中如何处理路由?
- slurm - 如何在后台运行 slurm?
- c# - 如何在 IIS 上使用 ASP.NET Core Web API 配置 SPA 应用程序
- c# - 如何在运行时将通过反射获取的属性转换为正确的泛型类型
- javascript - Javascript Object 正在推动两个索引而不是特定索引
- android - 使用 kotlin 中的范围存储从链接存储视频
- firebase - 如果 Firebase 时间戳达到任何数据中提到的时间,则触发 Firebase 函数
- react-native - 如何在特定的时间间隔内强制在 React Native 中进行深度渲染?
- python - 通过 HTTP 发送和格式化变量