You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio执行Access建表SQL复制表结构时触发语法错误

问题原因

你存储在query1中的SQL语句存在两处明确错误,是触发语法报错的直接原因:

  • SELECT子句内TIME字段后多写了冗余逗号,Access SQL解析到逗号后找不到后续待查询字段,会直接抛出语法异常
  • Access ACE引擎不支持CREATE TABLE ... SELECT的建表语法,且该写法也无法实现「仅复制现有表格式创建新表」的需求
修正方案

Access中复制表结构/表数据的标准语法为SELECT [字段列表] INTO [新表名] FROM [源表名] [WHERE 筛选条件],不需要额外写CREATE TABLE关键字,引擎会自动根据查询返回的字段结构创建对应新表:

  • 若需求为仅复制TIME_LOG的表结构(字段、类型、基础属性),不复制原有数据,使用如下SQL:
// 方括号包裹新表名,避免输入的表名含空格、特殊字符、保留字触发语法错误
string query1 = $"SELECT * INTO [{textBox1.Text.Trim()}] FROM TIME_LOG WHERE 1=2";
  • 若需求为复制表结构同时同步TIME_LOG内的全部数据,去掉末尾的WHERE 1=2条件即可:
string query1 = $"SELECT * INTO [{textBox1.Text.Trim()}] FROM TIME_LOG";

优化后完整代码

string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath;
// using块自动释放连接资源,无需手动调用Close(),异常场景下也不会出现连接泄漏
using (OleDbConnection connect = new OleDbConnection(connString))
{
    connect.Open();
    string query1 = $"SELECT * INTO [{textBox1.Text.Trim()}] FROM TIME_LOG WHERE 1=2";
    OleDbCommand command = new OleDbCommand(query1, connect);
    command.ExecuteNonQuery();
}

内容的提问来源于stack exchange,提问作者Big72Red

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:54:17