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中的一个命令字,在我更改表名后,它会正常工作!