Java生成mdb文件[MS Access文件](转载)

来源:互联网 发布:淘宝客做什么网站 编辑:程序博客网 时间:2024/06/05 17:35
 
  • 1. 在ClassPath下存一个空的blank.mdb. (也就是在你的项目中包含一个空白的.mdb文件)
  • 2. 将项目中的blank.mdb另存到新的路径. (可能是用户选择要导出mdb文件的保存路径)
  • 3. 将.mdb作为数据源, 用JDBC ODBC添加数据. 注: jdbc-odbc 在jre中是有的jre/lib/rt.jar. 也就是不需要引入额外的jar包.

注:
  • 步骤3中, 你可以执行CREATE Table的SQL语句.
  • 如果你已经知道了DB的SCHEMA, 那更简单了, 你直接在你的项目中包含一个带有SCHEMA的空的.mdb文件, 这样在步骤3的时候, 不需要再做表结构的创建, 只需要做数据插入即可.

Java代码

  1. public class AccessUtil { 
  2. private Connection connection; 
  3. private Statement statement; 
  4. // 空白mdb文件路径. 直接保存在src/cn/iwoo/dataexport/common/下.
  5. private final String blankMdbFilePath = "cn/iwoo/dataexport/common/"; 
  6. // 空白mdb文件名
  7. private final String blankMdbFileName = "blank.mdb"; 
  8. // 需要保存到的新的mdb文件路径和名
  9. private String savedMdbFilePathAndName = defaultSavedMdbFilePath + defaultSavedMdbFileName; 
  10. // 新mdb文件路径
  11. public static final String defaultSavedMdbFilePath = "C://"; 
  12. // 新mdb文件名
  13. public static final String defaultSavedMdbFileName = "data.mdb"; 
  14. // mdb文件后缀
  15. public static final String defaultSavedMdbFileExtension = ".mdb"; 
  16. // 标准的单件模式
  17. private static AccessUtil instance = new AccessUtil(); 
  18. private AccessUtil() { 
  19.     } 
  20. public static AccessUtil getInstance() { 
  21. return instance; 
  22.     } 
  23. /**
  24.      *

    Description: 设置待保存的新的mdb文件路径和名

  25.      */
  26. public void setSavedFilePathAndName(String newFilePathAndName) { 
  27. this.savedMdbFilePathAndName = newFilePathAndName; 
  28.     } 
  29. /**
  30.      *

    Description: 删除已经存在的mdb文件

  31.      */
  32. public void deleteOldMdbFile() throws Exception { 
  33.         File oldTargetFile = new File(savedMdbFilePathAndName); 
  34. if (oldTargetFile.exists()) { 
  35.             oldTargetFile.delete(); 
  36.         } 
  37.     } 
  38. /**
  39.      *

    Description: 将空白mdb文件拷贝到特定目录

  40.      */
  41. public void copyBlankMdbFile() throws Exception { 
  42.         InputStream is = this.getClass().getClassLoader().getResourceAsStream(blankMdbFilePath + blankMdbFileName); 
  43.         OutputStream out = new FileOutputStream(savedMdbFilePathAndName); 
  44. byte[] buffer = new byte[1024]; 
  45. int numRead; 
  46. while ((numRead = is.read(buffer)) != -1) { 
  47.             out.write(buffer, 0, numRead); 
  48.         } 
  49.         is.close(); 
  50.         out.close(); 
  51.     } 
  52. /**
  53.      *

    Description: 打开对mdb文件的jdbc-odbc连接

  54.      */
  55. public void connetAccessDB() throws Exception { 
  56.         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
  57.         String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + savedMdbFilePathAndName.trim() + ";DriverID=22;READONLY=true}"; 
  58.         connection = DriverManager.getConnection(database, "", ""); 
  59.         statement = connection.createStatement(); 
  60.     } 
  61. /**
  62.      *

    Description: 执行特定sql语句

  63.      */
  64. private void executeSql(String sql) throws Exception { 
  65.         statement.execute(sql); 
  66.     } 
  67. /**
  68.      *

    Description: 关闭连接

  69.      */
  70. public void closeConnection() throws Exception { 
  71.         statement.close(); 
  72.         connection.close(); 
  73.     }