C#sql delete命令
我按你说的把密码修好了。行与行之间的空格,我使用参数@LicensePlate。但代码不起作用C#sql delete命令,c#,sql,sql-server,sql-delete,C#,Sql,Sql Server,Sql Delete,我按你说的把密码修好了。行与行之间的空格,我使用参数@LicensePlate。但代码不起作用 SqlConnection con1 = new SqlConnection(strcon); con1.Open(); string query = " "; query += " BEGIN TRANSACTION "; query += " DELETE FROM VehicleRentals FROM VehicleRentals INNER JOIN Vehicles N VehicleR
SqlConnection con1 = new SqlConnection(strcon);
con1.Open();
string query = " ";
query += " BEGIN TRANSACTION ";
query += " DELETE FROM VehicleRentals FROM VehicleRentals INNER JOIN Vehicles N VehicleRentals.VehicleID = Vehicles.VehicleID WHERE LicensePlate=@LicensePlate ";
query += " DECLARE @x int ";
query += " SELECT @x = VehicleTypeCode FROM Vehicles WHERE LicensePlate=@LicensePlate ";
query += " DELETE FROM Manufacturers FROM Manufacturers INNER JOIN Models ON Manufacturers.ManufacturerCode = Models.ManufacturerCode INNER JOIN Vehicles ON Models.ModelID = Vehicles.ModelID WHERE LicensePlate=@LicensePlate ";
query += " DELETE FROM VehicleTypes FROM VehicleTypes WHERE VehicleTypeCode = @x ";
query += " COMMIT TRANSACTION ";
SqlCommand cmd1 = new SqlCommand(query, con1);
cmd1.Parameters.AddWithValue("@LicensePlate", txtPlaka.Text);
cmd1.ExecuteNonQuery();
con1.Close();
变成
query += "BEGIN TRANSACTION";
query += "DELETE FROM VehicleRentals FROM VehicleRentals INNER JOIN Vehicles N..."
您需要在每行之间包含空格:
"BEGIN TRANSACTIONDELETE FROM..."
正如其他人所说,您应该使用参数来避免sql注入
变成
query += "BEGIN TRANSACTION";
query += "DELETE FROM VehicleRentals FROM VehicleRentals INNER JOIN Vehicles N..."
您需要在每行之间包含空格:
"BEGIN TRANSACTIONDELETE FROM..."
正如其他人所说,您应该使用参数来避免sql注入。语句之间没有空格。您可以使用逐字字符串文字来避免为每一行写
query+=
。您还应该使用sql参数而不是字符串连接来防止sql注入。查看调试器中的query
,您会看到问题。好奇输入时会发生什么?试试看!这个问题毫无意义。这里曾经有一个问题被编辑掉了吗?@AndrewS-Yea OP编辑过,现在在编辑后询问问题。语句之间没有空格。您可以使用逐字字符串文字来避免为每一行写query+=
。您还应该使用sql参数而不是字符串连接来防止sql注入。查看调试器中的query
,您会看到问题。好奇输入时会发生什么?试试看!这个问题毫无意义。这里曾经有一个问题被编辑掉了吗?@AndrewS-Yea OP编辑过,现在正在询问编辑后的问题。另外,正如tim schmeter所说,你也需要使用变量。是的。我添加了一个关于它的注释,但当问题是关于查询执行不正确时,通常不将其包含在我的答案中。我按照您所说的进行了修复。使用行和参数之间的空格。但代码仍然不起作用。我在你的问题的第二行上面编辑了这个问题。您从VehicleRentals重复两次,您的加入中有N
而不是ON
。不确定是否还有其他语法问题;我没有查看整个查询,所以请检查所有内容是否拼写正确。此外,在每行的开头和结尾不需要空格(但这不会造成任何伤害)。你只需要在每个单词之间至少留一个空格,我很感激你的回答。它现在正在工作。非常感谢你!另外,正如tim schmeter所说,您也需要使用变量。我添加了一个关于它的注释,但当问题是关于查询执行不正确时,通常不将其包含在我的答案中。我按照您所说的进行了修复。使用行和参数之间的空格。但代码仍然不起作用。我在你的问题的第二行上面编辑了这个问题。您从VehicleRentals重复两次,您的加入中有N
而不是ON
。不确定是否还有其他语法问题;我没有查看整个查询,所以请检查所有内容是否拼写正确。此外,在每行的开头和结尾不需要空格(但这不会造成任何伤害)。你只需要在每个单词之间至少留一个空格,我很感激你的回答。它现在正在工作。非常感谢你!