1

我正在尝试使用 C# 将项目添加到我的数据库中。我有一个包含 2 个表的数据库:

“项目部分”

“项目表”,在这个表中有一个名为“项目名称”的列

但我收到此错误:

解析查询时出错。[令牌行号=1,令牌行偏移量=21,错误令牌=表]

这是我使用的代码。

private void button1_Click(object sender, EventArgs e)
    {
        sqlCEC.Open();

        //Project_List.Items.Add(new_project_name.Text.ToString());
        SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO Project Table(Project Name) VALUES(@Project Name)", sqlCEC);
        sqlCEcommand.Parameters.AddWithValue("@Project Name", new_project_name.Text);

        sqlCEcommand.ExecuteNonQuery();

        sqlCEC.Close();
    }
4

4 回答 4

1

您需要用括号将包含空格的表和字段括起来。

SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO [Project Table] ([Project Name]) VALUES (@ProjectName)", sqlCEC);

另外,不要在参数变量中包含任何空格,尝试将其更改为@ProjectName

sqlCEcommand.Parameters.AddWithValue("@ProjectName", new_project_name.Text);
于 2013-02-20T15:09:33.313 回答
1

带有空格的表名和列名通常必须用[and包裹]。此外,参数中不能有空格

INSERT INTO [Project Table]([Project Name]) VALUES(@ProjectName)

sqlCEcommand.Parameters.AddWithValue("@ProjectName", new_project_name.Text);
于 2013-02-20T15:09:37.767 回答
1

当数据库对象包含空格时,需要用方括号将该名称括起来。
也不要使用空格命名参数。

private void button1_Click(object sender, EventArgs e)
{
    sqlCEC.Open();
    SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO [Project Table] " + 
             "([Project Name]) VALUES(@ProjectName)", sqlCEC);
    sqlCEcommand.Parameters.AddWithValue("@ProjectName", new_project_name.Text);
    sqlCEcommand.ExecuteNonQuery();
    sqlCEC.Close();
}
于 2013-02-20T15:09:54.850 回答
1

怎么样?

private void button1_Click(object sender, EventArgs e)
{
    sqlCEC.Open();
    SqlCeCommand sqlCEcommand = new SqlCeCommand("INSERT INTO [Project Table]([Project Name]) VALUES([@Project Name])", sqlCEC);
    sqlCEcommand.Parameters.AddWithValue("@Project Name", new_project_name.Text);
    sqlCEcommand.ExecuteNonQuery();
    sqlCEC.Close();
}

因为您的数据库对象包含空格,所以您需要用[]

我的谦虚建议是,切勿在表格或列名中使用空格或其他特殊字符。

于 2013-02-20T15:10:12.447 回答