后端c#循环与SQL插入问题

本文关键字:插入 问题 SQL 循环 后端 | 更新日期: 2023-09-27 17:49:32

我有一个逗号分隔的文本框和一个循环,它解析出来并循环创建一系列SQL INSERT语句。但是,只有[Message_Bridge]中的第一个SQL INSERT语句在工作。foreach语句在第一次执行时运行良好,但随后的迭代不能插入。没有抛出错误。

dataCommand.CommandText = "INSERT INTO [Messages]([Subject], [Body], [Date_Time], [Originator], [Canceled], [Message_Index]) VALUES(@Subject, @Body, GETDATE(), @Originator, 0, 0); SELECT SCOPE_IDENTITY();";
dataCommand.Parameters.Clear();
dataCommand.Parameters.AddWithValue("@Subject", ComposeSubjectTexbox.Text);
dataCommand.Parameters.AddWithValue("@Body", ComposeBodyTexbox.Text);
dataCommand.Parameters.AddWithValue("@Originator", 506);
var Message_ID = dataCommand.ExecuteScalar();
string[] Recipients = ComposeToTextBox.Text.Split(',');
dataCommand.CommandText = "INSERT INTO [Message_Bridge]([Message_ID], [User_ID]) SELECT TOP 1 @Message_ID, [User_ID] FROM [Users] WHERE [User_Name] = @User_Receiver; ";
dataCommand.Parameters.Clear();
dataCommand.Parameters.AddWithValue("@Message_ID", Message_ID);
dataCommand.Parameters.Add("@User_Receiver", SqlDbType.NVarChar);
foreach (string User_Receiver in Recipients)
{
    dataCommand.Parameters["@User_Receiver"].Value = User_Receiver;
    dataCommand.ExecuteNonQuery();
}
myConnection.Close();

后端c#循环与SQL插入问题

我发现我的Split()函数在每个User_Receiver的末尾添加了一个空格。这导致只有第一个INSERT函数可以工作,而随后的INSERT函数不能执行。INSERT-SELECT函数设置正确,但我输入的数据不正确。谢谢你们的帮助。

似乎你应该使用bulkinserter,它会更快,是为批量插入:)