[英]SQL for Inserting an Image into an MS Access database using Java
我正在嘗試使用Java將圖像插入MS Access表中。
訪問文件稱為AdvisorImage.accdb。 該表稱為“圖像”,它有2列:ID和圖片。 ID是長文本類型,圖片是OLE對象類型。
我的方法是這樣的:
這是我到目前為止編寫的代碼:
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語句(字符串addRow)以指定並將我的字節數組(稱為字節)插入到Image表的OLE列中?
然后我要添加的問題是,如何編寫SQL和相應的Java代碼以從表中檢索字節數組?
注意:我知道不建議您將圖像存儲在數據庫中,但是我的具體情況需要這樣做。
不建議使用數據庫存儲照片,因為這些照片拍攝的尺寸很大(原始尺寸的十倍)。 但是,這是代碼
String addRow = "INSERT INTO " + "Image(ID,Picture) VALUES ( " + String.valueOf((int) (Math.random() * 32767)) +","+ bytes;
如果運行不正常,請嘗試用'',[]或“”引用bytes
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.