从另一个表创建表时出现语法错误

时间:2012-10-27 14:26:32

标签: java ms-access

我的代码:

    Statement stmt=null;
    String cmdstr = "create table " + tableName + " as (select * from Master_Sheet);";

        try{            
            stmt = con.createStatement();
            stmt.executeUpdate(cmdstr);

            }
        catch(Exception e)
            {
            e.printStackTrace();
            }
        finally
        {
            try{
                if(stmt != null)
                stmt.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }

输出:

java.sql.SQLException:[Microsoft] [ODBC Microsoft Access驱动程序] CREATE TABLE语句中的语法错误。     at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)     在sun.jdbc.odbc.JdbcOdbc.standardError(未知来源)

请帮助,我是java编码的新手。

2 个答案:

答案 0 :(得分:3)

对于Access,基于查询数据创建新表的语法是:

SELECT INTO newTable
FROM oldTable;

所以你的代码应该重写为:

String cmdstr = "insert into table " + tableName + " From Master_Sheet;";

在您的Java代码中使用它们之前,请确保您的SQL语句遵循MS Access syntax

答案 1 :(得分:2)

您要求Access使用此SQL语句创建表:

create table yourTableName as (select * from Master_Sheet);

(包括最后的;)。它告诉你这不是CREATE TABLE statement的有效语法。这不是Java的东西,它是Access的东西。请参阅链接的CREATE TABLE文档。 (我链接了最新的,请务必找到您正在使用的Access版本。)