java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]无法更新。数据库或对象是只读的

java.sql.SQLException:[Microsoft][ODBC Microsoft Access驱动程序]无法更新。数据库或对象是只读的,java,spring,hibernate,ms-access,Java,Spring,Hibernate,Ms Access,我使用的是Spring3.1.2和Hibernate4.1.5_SP1。我正在尝试将CSV文件导入到动态创建的Access文件中。代码与此类似: final SingleConnectionDataSource ds = new SingleConnectionDataSource(); ds.setUrl(myBean.getMicrosoftAccessDriverUrl() + file.getAbsolutePath()); final JdbcTemplate

我使用的是Spring3.1.2和Hibernate4.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
我检查了这些文件,它们不是只读的。对如何解决这个问题有什么建议吗


谢谢

FROM子句在我看来不正确

SELECT * INTO myTable 
FROM [Text;HDR=YES;DATABASE=C:\somePath;].[myAccessFile.accdb]
我以为您打算从CSV导入Access表。如果是这样,我认为您应该使用CSV文件名来代替Access文件(
myAccessFile.accdb


您是否已获得strSQL值并尝试在SQL Server中运行它?如果access数据库已由其他会话打开,则无法更新。关闭Access数据库会话。我检查得非常彻底,没有看到它在其他任何地方被打开。我在语句执行后关闭它。不幸的是,我没有安装SQL Server来测试它。嗯,我的真实代码确实显示csv文件,但我的日志显示access文件输出。我会再检查一遍那里发生了什么。是的,就是这样。我的FileFilter在前面的代码中出错,错误地将access文件发送到csv导入功能,而不是csv文件。
SELECT * INTO myTable 
FROM [Text;HDR=YES;DATABASE=C:\somePath;].[YourFile.csv]