【问题标题】:Syntax error in CREATE TABLE statement When using Create Table AS使用 Create Table AS 时 CREATE TABLE 语句中的语法错误
【发布时间】:2018-06-06 12:08:07
【问题描述】:

对于一个项目,我需要从模板中复制一个表,但是在执行 SQL 代码时,响应是 CREATE TABLE 语句中的语法错误。

   OleDbConnection conn = new OleDbConnection();
        conn.ConnectionString = ConfigurationManager.ConnectionStrings["LoginDataB"].ToString();
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = conn;


    cmd.CommandText = "CREATE TABLE 'TEST' AS SELECT * INTO 'TEST' FROM 
    buttonstemplate";

这是我使用的代码。然而,当我使用像 W3schools 这样的在线 SQL 编辑器时,它工作得很好。 我正在使用 MS Access 2016 并在 ASP.net 中编程

我刚开始学习编码,所以希望有人能帮助我。

【问题讨论】:

  • 您使用的是哪个 DBMS
  • 微软访问
  • 当您为所有单冒号值(例如 'TEST' 到 '''test''' 添加一个冒号时会发生什么情况
  • TEST 是您要分配给表的变量还是实际名称?您是否在 Access 查询设计器中测试了 SQL? @TheGameiswar,什么冒号,在哪里?
  • Test 是我要创建的数据库的名称,@June7 我做了,它给出了同样的错误。但就像我在使用 W3school 编辑器时所说的那样,它工作得很好,所以我假设它的访问权限。

标签: c# sql asp.net ms-access


【解决方案1】:

试试这个:

SELECT * INTO TEST FROM BUTTONSTEMPLATE

将表复制到另一个数据库,例如:externaldb.mdb

SELECT * INTO TEST IN 'externaldb.mdb' FROM BUTTONSTEMPLATE

【讨论】:

    【解决方案2】:

    ...我不认为 SQL 在W3 Editor 中运行良好(就像你的问题所说的那样)。 :-)

    我相信您知道第一步是确保 SQL 能够自行运行。

    您正在组合两种不同类型的 SQL 语句来创建表:

    CREATE TABLE 用于定义新表。例如:

    CREATE TABLE Persons
    (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    );
    

    如果你想根据另一个表的结果创建一个表:

    INSERT INTO table2
    SELECT * FROM table1
    WHERE condition; 
    

    ...所以也许你可以使用:

    INSERT INTO TEST
    SELECT * FROM buttonstemplate
    

    【讨论】: