0

質問のタイトルの言い回しが正確にわかりませんでした。

挿入を行うストアドプロシージャのSQLパラメータを設定するこのコードブロックがあります。

 Dim sproc As StoredProcedure = New StoredProcedure("UsersInsert2", DataAccessConfiguration)
    sproc.AddInput("@ID", SqlDbType.NVarChar, 10, entity.UserId)
    sproc.AddInput("@PCode", SqlDbType.SmallInt, entity.PriviledgeCode)
    sproc.AddInput("@Pwd", SqlDbType.NVarChar, 10, entity.Password.ToString())
    sproc.AddInput("@Lang", SqlDbType.NVarChar, 1, entity.DefaultLanguage)
    sproc.AddInput("@Name", SqlDbType.NVarChar, 40, entity.UserName)
    sproc.AddInput("@Notice", SqlDbType.TinyInt, entity.SaveNotice)
    sproc.AddInput("@CreatedBy", SqlDbType.VarChar, 50,CurrentUserCredentials.UserName)

SSMSでストアドプロシージャをテストしましたが、動作します。問題は、アプリケーションから呼び出そうとしたときです。失敗します。@@ rowcount=-1。私はデータベースからエラーコードを返そうとしました...サイコロはありません。-1として戻ってきます

実行されるものは次のようになります

sproc = {EXEC UsersInsert2 @ID=ruxtest7, @PCode=0, @Pwd=1234, @Lang=E, @Name=ruxpint, @Notice=1, @CreatedBy=ruxpint}

問題が何であるかについて何か考えはありますか?私はこのコードを数回再利用しました。唯一の違いは、NVarCharとvb.netを使用していることです。

ありがとう。

TR

4

1 に答える 1

0

したがって、ストアドプロシージャの呼び出しは問題ありませんでした。トランザクションを実行する基本クラスで、トランザクションをコミットするのを忘れました。D'oh!(これは将来誰かを助けるかもしれません)

            Try
                x = command.ExecuteNonQuery()
                transaction.Commit() <- I was missing this line!!!
            Catch ex As Exception
                transaction.Rollback()
            Finally
                If conn.State And ConnectionState.Closed = 0 Then
                    conn.Close()
                End If
            End Try
于 2011-10-06T17:54:37.573 に答える