Итак, у вас есть готовый файл базы данных Access в качестве ресурса в вашем проекте. Вы можете открыть копию этой базы данных в памяти с помощью Jackcess, сначала используя Class#getResourceAsStream
, чтобы открыть ресурс ...
final String dbResourcePath = "/embedded.accdb";
@SuppressWarnings("rawtypes")
Class thisClass = JackcessTestMain.class; // my "main" class
InputStream dbResourceStream = null;
// for running from executable jar
dbResourceStream = thisClass.getResourceAsStream("/resources" + dbResourcePath);
if (dbResourceStream == null) {
// for running inside the Eclipse IDE
dbResourceStream = thisClass.getResourceAsStream(dbResourcePath);
}
... передать это InputStream
Джексе MemFileChannel
...
MemFileChannel mfc = MemFileChannel.newChannel(dbResourceStream);
... и затем используйте DatabaseBuilder
, чтобы открыть Database
из канала:
Database db = new DatabaseBuilder().setChannel(mfc).open()
Когда вы закончите вносить изменения в копию базы данных в памяти, вы можете отправить содержимое канала в OutputStream. Например,
db.close();
FileOutputStream fos = new FileOutputStream("C:/Users/Public/zzz.accdb");
mfc.transferTo(fos);
fos.close();