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