【问题标题】:C# SQL Syntax ErrorC# SQL 语法错误
【发布时间】:2015-03-17 15:57:32
【问题描述】:

谁能告诉我为什么当我尝试将字段添加到此 SQL Server 数据库时出现错误

关键字“表”附近的语法不正确。

代码:

{
    // TODO: This line of code loads data into the 'tBoxDataSet.Table' table. You can move, or remove it, as needed.
    this.tableTableAdapter.Fill(this.tBoxDataSet.Table);
}

private void button1_Click(object sender, EventArgs e)
{
         SqlConnection cn = new SqlConnection(global::TicketBox.Properties.Settings.Default.TBoxConnectionString);
        try
        {
            using (SqlConnection connect = new SqlConnection(global::TicketBox.Properties.Settings.Default.TBoxConnectionString))
            using (SqlCommand runsql = new SqlCommand(@"INSERT INTO Table (Event_ID,Artist,Venue,Date,Time,Tickets) values(@EventID,@Artist, @Venue, @Date, @Time,@Tickets)", connect))
            {
                runsql.Parameters.Add("@EventID", SqlDbType.Int).Value = textBox1.Text;
                runsql.Parameters.Add("@Artist", SqlDbType.VarChar).Value = textBox2.Text;
                runsql.Parameters.Add("@Venue", SqlDbType.VarChar).Value = textBox3.Text;
                runsql.Parameters.Add("@Date", SqlDbType.Date).Value = textBox4.Text;
                runsql.Parameters.Add("@Time", SqlDbType.Time).Value = textBox5.Text;
                runsql.Parameters.Add("@Tickets", SqlDbType.Int).Value = textBox6.Text;
                connect.Open();
                runsql.ExecuteNonQuery();
            }

            MessageBox.Show("Event Added", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.tableTableAdapter.Fill(this.tBoxDataSet.Table);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            cn.Close();
        }

【问题讨论】:

  • 我认为“表”是一个关键字。你实际上有一个叫做“表”的表吗?我建议你把它重命名为'Concerts'之类的

标签: c# sql sql-server syntax


【解决方案1】:

TableTime 在 T-SQL 中是 reserved keyword。您需要将它们与方括号一起使用,例如 [Table][Time]

作为最佳实践,将它们更改为非保留字词。

在 SQL Server 的未来版本中,Date 也可以是保留关键字。您可能还需要将它与方括号一起使用。

【讨论】:

  • 我不敢相信我忘记了,看了太久了。谢谢修复:)
  • 数据库可以区分大小写;如果 OP 调用表 Table,它应该是 [Table] - 而不是 [TABLE],它可以是一个完全不同的表;p
  • @MarcGravell 没错。即使他们的情况不同,TableTABLE 都表现为保留字。但是,是的,我根据 OP 的原始列名进行了编辑。谢谢。
【解决方案2】:

如果你的表名是TABLE,那么……那是sql的关键字……

将您的查询更改为

插入[表格]

使用 [ ] 将覆盖关键字

【讨论】:

    【解决方案3】:

    由于Tabel是保留关键字,所以需要像这样使用[table]

    将查询更改为。

    INSERT INTO [Table] (Event_ID,Artist,Venue,Date,Time,Tickets)  
    values(@EventID,@Artist, @Venue, @Date, @Time,@Tickets)
    

    【讨论】:

      猜你喜欢
      • 2015-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多