1
我正嘗試使用Java將圖像插入到MS Access表中。用於使用Java將圖像插入到MS Access數據庫的SQL語句
Access文件被稱爲AdvisorImage.accdb。該表被稱爲圖像,它有2列:ID和圖片。 ID是長文本類型,而圖片是OLE對象類型。
我的做法是這樣的:
1.I建立數據庫連接 2.Convert圖像的字節數組 3.創建SQL語句,以字節數組保存到數據庫 4.Execute的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代碼以從表中檢索字節數組?
注意:我知道不建議將圖像存儲在數據庫中,但我的具體情況需要它。歡迎提供更多信息的任何建議或請求。謝謝。
[如何將圖像保存到MS Access數據庫中?](http://stackoverflow.com/questions/8046606/how-to-save-the-images-in-an-ms-access-數據庫) – vzamanillo 2014-11-06 19:25:53
我看到那篇文章,其實這是我看到的第一個。這給了我解決問題的方法,但實際上並沒有提供任何代碼作爲例子 – 2014-11-06 20:56:19