C# 尝试将数据插入数据库时出现语法错误

C# 尝试将数据插入数据库时出现语法错误,c#,asp.net,sql-server,C#,Asp.net,Sql Server,我试图使用一个按钮将文本框中的所有数据插入数据库,但单击该按钮时出错。代码如下: protected void orderBtn_Click(object sender, EventArgs e) { SqlConnection con2 = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\ChocolateDatabase.mdf;Integrated Security=T

我试图使用一个按钮将文本框中的所有数据插入数据库,但单击该按钮时出错。代码如下:

protected void orderBtn_Click(object sender, EventArgs e)
{
    SqlConnection con2 = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\ChocolateDatabase.mdf;Integrated Security=True");
    SqlCommand insert = new SqlCommand("Insert into Order(Cardholder, CardNumber, CardExpireDate, CardCVV, Address, PayAmount) values (@Cardholder, @CardNumber, @CardExpireDate, @CardCVV, @Address, @PayAmount)", con2);
    insert.Parameters.AddWithValue("@Cardholder", cName.Text);
    insert.Parameters.AddWithValue("@CardNumber", cNo.Text);
    insert.Parameters.AddWithValue("@CardExpireDate", cExpire.SelectedDate);
    insert.Parameters.AddWithValue("@CardCVV", cCCV.Text);
    insert.Parameters.AddWithValue("@Address", cAddr.Text);
    insert.Parameters.AddWithValue("@PayAmount", totalTB.Text);

    con2.Open();
    insert.ExecuteNonQuery();
    con2.Close();
}

我已经检查了表和列名,它们都是正确的。

因为顺序是一个关键字,所以需要用括号将表名括起来:

SqlCommand insert = new SqlCommand("Insert into [Order](Cardholder, CardNumber, CardExpireDate, CardCVV, Address, PayAmount) values (@Cardholder, @CardNumber, @CardExpireDate, @CardCVV, @Address, @PayAmount)", con2);
之所以可以使用括号,是因为Microsoft SQL Server无法识别分隔的变量名


我不喜欢使用关键字作为表和列的名称。但这不是规则,而是惯例。使用关键字作为名称可能会造成混淆,但另一方面,它可以使代码更清晰易懂。

因为顺序是一个关键字,所以需要用括号将表名括起来:

SqlCommand insert = new SqlCommand("Insert into [Order](Cardholder, CardNumber, CardExpireDate, CardCVV, Address, PayAmount) values (@Cardholder, @CardNumber, @CardExpireDate, @CardCVV, @Address, @PayAmount)", con2);
之所以可以使用括号,是因为Microsoft SQL Server无法识别分隔的变量名


我不喜欢使用关键字作为表和列的名称。但这不是规则,而是惯例。使用关键字作为名称可能会造成混淆,但另一方面,它可以使代码更清晰易懂。

我认为您执行的插入操作顺序是错误的,应该是这样的:

 SqliteCommand _mysqlcmd ;
 connectDataBase();//myCon2.open here as it depends how you are connecting
_mysqlcmd = con2.CreateCommand();
_mysqlcmd.CommandText = "Insert query.....";
_mysqlcmd.Parameters.AddWithValue("","");//same for all Insertion
_mysqlcmd.ExecuteQuery();

用这段代码检查一下,也许它会对你有所帮助

我认为您执行的插入操作的顺序是错误的,应该是这样的:

 SqliteCommand _mysqlcmd ;
 connectDataBase();//myCon2.open here as it depends how you are connecting
_mysqlcmd = con2.CreateCommand();
_mysqlcmd.CommandText = "Insert query.....";
_mysqlcmd.Parameters.AddWithValue("","");//same for all Insertion
_mysqlcmd.ExecuteQuery();

用这段代码检查一下,也许它会对你有所帮助

使用[Order]而不是Order,因为Order是分隔符 当我们使用ORDERBY子句时,我们使用order关键字,所以当我们将其作为对象名写入时,我们必须将其作为[order]放置,否则它将被视为关键字

Insert into [Order] (Cardholder, CardNumber, CardExpireDate, CardCVV, Address, PayAmount) values (@Cardholder, @CardNumber, @CardExpireDate, @CardCVV, @Address, @PayAmount

例如,使用[Order]而不是Order,因为Order是分隔符 当我们使用ORDERBY子句时,我们使用order关键字,所以当我们将其作为对象名写入时,我们必须将其作为[order]放置,否则它将被视为关键字

Insert into [Order] (Cardholder, CardNumber, CardExpireDate, CardCVV, Address, PayAmount) values (@Cardholder, @CardNumber, @CardExpireDate, @CardCVV, @Address, @PayAmount

is在关键字Order附近显示错误
不正确的语法。
。这可能是因为Order是a吗?您应该检查并停止使用
。AddWithValue()
-它可能会导致意外和令人惊讶的结果…@hanlet well u是正确的!order是sql中的一个命令字,在我更改表名后,它会正常工作!is在关键字Order附近显示错误
不正确的语法。
。这可能是因为Order是a吗?您应该检查并停止使用
。AddWithValue()
-它可能会导致意外和令人惊讶的结果…@hanlet well u是正确的!order是sql中的一个命令字,在我更改表名后,它会正常工作!