Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#sql delete命令_C#_Sql_Sql Server_Sql Delete - Fatal编程技术网

C#sql delete命令

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

我按你说的把密码修好了。行与行之间的空格,我使用参数@LicensePlate。但代码不起作用

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
。不确定是否还有其他语法问题;我没有查看整个查询,所以请检查所有内容是否拼写正确。此外,在每行的开头和结尾不需要空格(但这不会造成任何伤害)。你只需要在每个单词之间至少留一个空格,我很感激你的回答。它现在正在工作。非常感谢你!