我正在尝试使用存储过程和@@ identity将不同的字段以及列表框中的所有选定项添加到数据库中。
但只有第一个选定的值才会插入到表中。当我尝试使用for循环时,它会给出存储过程中存在太多参数的错误。
我是asp.net的新手,非常感谢任何帮助。
存储过程:
ALTER Procedure [dbo].[InsertProcessUnit]
(
@ProcessUnitName Varchar(50),
@ProcessUnitNumber int,
@ProcessUnitInspected bit,
@RefineryAreaName Varchar(50),
@System_id int
)
As
Begin
BEGIN TRANSACTION
INSERT INTO Process_Units (Process_Unit_Name, Process_Unit_Number, Process_Unit_Inspected, Refinery_Area_id)
VALUES (@ProcessUnitName, @ProcessUnitNumber,@ProcessUnitInspected,(SELECT Refinery_Area_id from Refinery_Area where Refinery_Area_Name Like @RefineryAreaName))
DECLARE @DataID int;
SET @DataID = @@IDENTITY
INSERT INTO PU_Systems (Process_Unit_id, System_id) VALUES (@DataID, @System_id)
COMMIT
End
Aspx.cs code:
try
{
connection.Open();
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "InsertProcessUnit";
command.Parameters.AddWithValue("@ProcessUnitNumber", PUNumberTxtbox.Text);
command.Parameters.AddWithValue("@ProcessUnitName", PUNameDdl.SelectedItem.Value);
command.Parameters.AddWithValue("@ProcessUnitInspected", PUInspectedDdl.SelectedItem.Value);
command.Parameters.Add("@RefineryAreaName", SqlDbType.Text).Value = RefAreaNameTxtbox.Text;
command.Parameters.AddWithValue("@System_id", ListBox1.SelectedItem.Value);
command.ExecuteNonQuery();
connection.Close();
Label1.Text = "Successfully Inserted !!";
}
答案 0 :(得分:0)
您可以使用SelectedIndices属性:
foreach (int i in listbox.SelectedIndices)
{
listbox.Items[i].ToString() ...
}
或者
foreach (var item in listbox.SelectedItems)
{
MessageBox.Show(item.ToString());
}
答案 1 :(得分:0)
我认为您在设置c#代码的参数之前错过了command.Parameters.Clear()。