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

后端C#循环与SQL插入问题,c#,sql,loops,insert,C#,Sql,Loops,Insert,我有一个逗号分隔的文本框和一个循环,它解析文本框并循环创建一系列SQL INSERT语句。但是,只有[Message_Bridge]中的第一条SQL INSERT语句在工作。foreach语句在第一次执行时运行良好,但后续迭代不会插入。不会抛出任何错误 dataCommand.CommandText = "INSERT INTO [Messages]([Subject], [Body], [Date_Time], [Originator], [Canceled], [Message_Index]

我有一个逗号分隔的文本框和一个循环,它解析文本框并循环创建一系列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();

似乎您应该使用,它会更快,并且适合批量插入:)

似乎您应该使用,它会更快,并且适合批量插入:)

我发现我的Split()函数在每个用户接收器的末尾添加了一个空格。这只导致第一个INSERT函数工作,而随后的函数无法通过。INSERT-SELECT函数设置正确,但输入的数据不正确。谢谢你们的帮助

我发现我的Split()函数在每个User\u接收器的末尾添加了一个空格。这只导致第一个INSERT函数工作,而随后的函数无法通过。INSERT-SELECT函数设置正确,但输入的数据不正确。谢谢你们的帮助

为了确定,
User\u Receiver
的所有值是否都存在于
Users
表中?建议您使用sql profiler查看是否执行了insert命令。如果没有,请在
时尝试在loop中为dataCommand创建新的instanst。添加
@User\u Receiver
的参数,尝试提供最大长度作为第三个参数。为了确保,
User\u Receiver
的所有值是否都存在于
Users
表中?建议您使用sql profiler查看是否执行了insert命令。如果没有,请在
时尝试在loop中为dataCommand创建新的instanst。添加
@User\u Receiver
的参数,尝试提供最大长度作为第三个参数。我尝试在循环中初始化data命令,但无效。我还在AddWithValue()函数中明确说明了最大长度;没有效果。我想尝试bulkinserter,但我知道它用于有1000行的事务,而我只有大约10行。我所拥有的不应该有用吗?这是一个错误吗?我尝试在循环内部初始化数据命令,但没有效果。我还在AddWithValue()函数中明确说明了最大长度;没有效果。我想尝试bulkinserter,但我知道它用于有1000行的事务,而我只有大约10行。我所拥有的不应该有用吗?这是虫子吗?