私は次のコードを持っています:
DataSet dataSet = new DataSet();
bool result;
using (SqlConnection connection = new SqlConnection(command.Connection.ConnectionString))
{
connection.Open();
SqlDataAdapter adapter = new SqlDataAdapter(command);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.RowUpdated += OnRowUpdated;
adapter.RowUpdating += AdapterOnRowUpdating;
adapter.Fill(dataSet);
// Code to modify data in the DataSet here.
// Without the SqlCommandBuilder, this line would fail.
adapter.UpdateCommand = builder.GetUpdateCommand();
int i = adapter.Update(dataSet);
result = i > 0;
}
return result;
このコードは、私のSqlCommandオブジェクトを取得し、それをSqlDataAdapterのupdateメソッドに送信することを想定しています。SqlCommandは、adapter.Update()メソッドを使用して実行されるINSERT、UPDATE、またはDELETEである可能性があります。
コマンドは正常に実行されますが、adapter.Update()メソッドは0行を返します。データベースを確認しましたが、成功したことがわかります。RowUpdatedイベントとRowsUpdatingイベントも発生していません。何が起こっているのかわかりません。助けてください。
前もって感謝します。
編集:
public void OnRowUpdated(object sender, SqlRowUpdatedEventArgs sqlRowUpdatedEventArgs)
{
switch (sqlRowUpdatedEventArgs.StatementType)
{
case StatementType.Insert:
case StatementType.Update:
case StatementType.Delete:
case StatementType.Batch:
if (sqlRowUpdatedEventArgs.Status != UpdateStatus.ErrorsOccurred)
SqlReporting.LogSqlCommand(sqlRowUpdatedEventArgs.Command);
break;
}
}
編集: 挿入するために次のクエリを使用しています:
INSERT INTO Users
(Username, Firstname, Lastname, RoleId, ReceiveRoleAlerts, StatusId, Password, Fingerprint, AuthenticityCheck, CreatedByUserId, CreationDate, ModifiedByUserId,
ModificationDate)
SELECT @Username AS Expr1, @Firstname AS Expr2, @Lastname AS Expr3, @RoleId AS Expr4, @ReceiveRoleAlerts AS Expr5, @StatusId AS Expr6, @Password AS Expr7,
@Fingerprint AS Expr8, @AuthenticityCheck AS Expr9, @CreatedByUserId AS Expr10, @CreationDate AS Expr11, @ModifiedByUserId AS Expr12,
@ModificationDate AS Expr13
WHERE (NOT EXISTS
(SELECT Username, Firstname, Lastname, RoleId, ReceiveRoleAlerts, StatusId, Password, Fingerprint, AuthenticityCheck, CreatedByUserId, CreationDate,
ModifiedByUserId, ModificationDate
FROM Users AS Users_1
WHERE (Username = @Username)));