1

コンマ区切りのテキストボックスと、それを解析してループして一連の SQL INSERT ステートメントを作成するループがあります。ただし、[Message_Bridge] の最初の SQL INSERT ステートメントのみが機能しています。foreach ステートメントは最初は正常に機能していますが、その後の反復では INSERT が実行されません。エラーはスローされません。

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();
4

2 に答える 2

1

Split() 関数が各 User_Receiver の末尾にスペースを追加していることを発見しました。これにより、最初の INSERT 関数のみが機能し、後続の関数は実行されませんでした。INSERT-SELECT 関数は正しく設定されましたが、入力したデータが正しくありませんでした。助けてくれてありがとう。

于 2012-12-26T20:14:20.573 に答える
0

を使用する必要があるようですbulkinserter、それはより速くなり、一括挿入用に作られています:)

于 2012-12-25T03:18:52.137 に答える