0

更新を行うストアド プロシージャを次に示します。SQL Server を使用してプロシージャをテストすると、完全に機能します。

ALTER PROCEDURE [TKSFlex].[UpdateComment]
-- Add the parameters for the stored procedure here
  @Comment char(50),
  @Employee char(25)
AS
BEGIN TRANSACTION 
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT On;

    -- Insert statements for procedure here

 Update whiteboard set Comment = @Comment 
 where Employee = @Employee

COMMIT

そして、更新ボタンがクリックされたときに実行されるコードは次のとおりです

Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal es System.EventArgs) Handles btnUpdate.Click

    InputsModule.Employee = "'Mathe BF'"
    Objconn.Open()

    dbcommand.Connection = Objconn

    dbcommand.CommandType = CommandType.StoredProcedure
    dbcommand.CommandText = "[TKSFlex].[UpdateComment]"

    dbcommand.Parameters.AddWithValue("@Comment", txtComment.Text)
    dbcommand.Parameters.AddWithValue("@Employee", InputsModule.Employee)

    'dbcommand.Parameters.Add("@Comment", SqlDbType.Char).Value = txtComment.Text
    'dbcommand.Parameters.Add("@Employee", SqlDbType.Char).Value = InputsModule.Employee
    Dim i As Integer = 0

    Try
        i = dbcommand.ExecuteNonQuery()
    Catch ex As SqlException
        MsgBox("failed")
    End Try

    Objconn.Close()
End Sub

クエリが実行されたときにテーブルが更新されず、例外がスローされないため、コードが実行されてもデータベースに変更が加えられていないことを意味します。どこで間違ったのかわかりません

4

2 に答える 2

2

最も論理的な原因は次のとおりです。

InputsModule.Employee = "'Mathe BF'"

それはおそらく次のようになります。

InputsModule.Employee = "Mathe BF"

パラメータは、ADO.NET によって引用されます。引用符を手動で入力すると、おそらく存在しない quote-mathe bf-quote が検索されます:)

于 2012-12-23T19:59:50.333 に答える
0

値付きで追加するには、以下のコードに示すようにパラメーターのタイプを指定する必要があります。

SqlParameter parameter = command.Parameters.AddWithValue("paramName", value); parameter.SqlDbType = SqlDbType.Int;

于 2012-12-23T19:59:50.663 に答える