【发布时间】:2012-08-09 15:11:18
【问题描述】:
我正在使用 Spring 3.1.2 和 Hibernate 4.1.5_SP1。我正在尝试将 CSV 文件导入到动态创建的 Access 文件中。代码如下所示:
final SingleConnectionDataSource ds = new SingleConnectionDataSource();
ds.setUrl(myBean.getMicrosoftAccessDriverUrl() + file.getAbsolutePath());
final JdbcTemplate jdbcTemplate = new JdbcTemplate(ds);
final String strSQL = "SELECT * INTO " + accessTableName + " FROM
[Text;HDR=YES;DATABASE=" + csvFile.getPath()+ ";].[" +
csvFile.getName() + "]";
jdbcTemplate.execute(strSQL);
ds.getConnection().close();
这会产生如下错误:
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad
SQL grammar
[SELECT * INTO myTable
FROM [Text;HDR=YES;DATABASE=C:\somePath;].[myAccessFile.accdb]];
nested exception is java.sql.SQLException: [Microsoft][ODBC Microsoft
Access Driver] Cannot update. Database or object is read-only.
我的数据源 URL 类似于:
jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:\somePath\myAccessFile.accdb
我检查了文件,它们不是只读的。有关如何解决此问题的任何建议?
谢谢!
【问题讨论】:
-
您是否获得了
strSQL值并尝试在 SQL Server 中运行它? -
如果您的access数据库被另一个会话打开,您将无法更新。关闭 Access 数据库会话。
-
我检查得很彻底,我没有看到它在其他任何地方打开过。我在语句执行后关闭它
-
很遗憾,我没有安装 SQL Server 来测试它。
标签: java spring hibernate ms-access