gpt4 book ai didi

java - 使用 Java 将图像插入 MS Access 数据库的 SQL

转载 作者:太空宇宙 更新时间:2023-11-04 14:24:55 25 4
gpt4 key购买 nike

我正在尝试使用 Java 将图像插入到 MS Access 表中。

Access 文件名为 AdvisorImage.accdb。该表称为 Image,它有 2 列:ID 和 Picture。 ID是Long Text类型,Picture是OLE Object类型。

我的方法是这样的:

  1. 我建立数据库连接
  2. 将图像转换为字节数组
  3. 创建 SQL 语句以将字节数组保存到数据库
  4. 执行SQL语句
  5. 关闭连接

这是我到目前为止编写的代码:

package com.database.access;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

public class dbAccess {
public static void main(String[] args)
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.accdb)};DBQ=C://Users/abcde/Documents/AdvisorImage.accdb;";
Connection conn = DriverManager.getConnection(database, "", "");
Statement s = conn.createStatement();

//convert file to byte array
File file = new File("C://Users/abcde/Pictures/WW.PNG");

FileInputStream fis = new FileInputStream(file);

ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];

try {
for(int readNum;(readNum = fis.read(buf)) != -1;) {
bos.write(buf,0,readNum);
System.out.println("read" + readNum + " bytes," );
}
} catch (IOException ex) {
System.out.println(ex);
}
byte[] bytes = bos.toByteArray();

//write to database
String addRow = "INSERT INTO " + "Image(ID,Picture) VALUES ( " + String.valueOf((int) (Math.random() * 32767)) + ", ";
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}

您将如何构建该 SQL 语句(String addRow)来指定我的字节数组(称为 bytes)并将其插入到 Image 表的 OLE 列中?

然后我的附加问题是,如何编写 SQL 和相应的 Java 代码来从表中检索字节数组?

注意:我知道不建议将图像存储在数据库中,但我的具体情况需要它。

最佳答案

不推荐使用数据库来存储照片,因为这些照片的尺寸很大(原始尺寸的十倍)。然而,这是代码

String addRow = "INSERT INTO " + "Image(ID,Picture) VALUES ( " + String.valueOf((int) (Math.random() * 32767)) +","+ bytes;

如果效果不佳,请尝试用“”、[ ] 或“”引用字节

关于java - 使用 Java 将图像插入 MS Access 数据库的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26787747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com