1

既存の INSERT コードを使用して、 UPDATE以外は同じことを行うことは可能ですか?

例は次のとおりです。

ID  | formTitle1 | formTitle2 | formTitle3 | formTitle4
-------------------------------------------------------
20  | The Rock   | Booker     | The Vine   | Keys

これらの行の 4 つすべてを更新したい場合は、次のようにできると思いますか?:

sql = "UPDATE formSettings " & _
      "SET (formTitle1, formTitle2, formTitle3, formTitle4) " & _
      "VALUES (@formTitle1, @formTitle2, @formTitle3, @formTitle4) " & _
      "WHERE ID = '" & theID & "'"

Dim updateCmd As New SqlCommand(sql, myCONN)
updateCmd.Parameters.Add("@formTitle1", SqlDbType.VarChar)
updateCmd.Parameters.Add("@formTitle2", SqlDbType.VarChar)
updateCmd.Parameters.Add("@formTitle3", SqlDbType.VarChar)
updateCmd.Parameters.Add("@formTitle4", SqlDbType.VarChar)

updateCmd.Parameters("@formTitle1").Value = "changed1"
updateCmd.Parameters("@formTitle2").Value = "changed2"
updateCmd.Parameters("@formTitle3").Value = "changed3"
updateCmd.Parameters("@formTitle4").Value = "changed4"

myCONN.Open()
updateCmd.ExecuteScalar()
myCONN.Close()

次のように更新する必要があります。

ID  | formTitle1 | formTitle2 | formTitle3 | formTitle4
-------------------------------------------------------
20  | changed1   | changed2   | changed3   | changed4

UPDATE 構文が間違っていることはわかっていますが、これが可能かどうかはわかりません。

4

2 に答える 2

5

更新の構文が無効です。

sql = "UPDATE formSettings " & _
      "SET formTitle1 = @formTitle1, formTitle2 = @formTitle2, formTitle3 = @formTitle3, formTitle4 = @formTitle4 " & _
      "WHERE ID = @ID"

また、パラメータ化IDされ、5 つのパラメータを持つことになります。

また、コードをこれに再構築し、

  • 使用USINGステートメント
  • 例外処理の追加

スニペット、

Dim _sql As String = "UPDATE formSettings " & _
      "SET formTitle1 = @formTitle1, formTitle2 = @formTitle2, formTitle3 = @formTitle3, formTitle4 = @formTitle4 " & _
      "WHERE ID = @ID" 
Using conn As New SqlConnection("connectionStringHere")
    Using comm As New SqlCommand()
        With comm
            .Connection = conn
            .CommandType = CommandType.Text
            .CommandText = _sql
            .Parameters.AddWithValue("@formTitle1", "changed1")
            .Parameters.AddWithValue("@formTitle2", "changed2")
            .Parameters.AddWithValue("@formTitle3", "changed3")
            .Parameters.AddWithValue("@formTitle4", "changed4")
            .Parameters.AddWithValue("@ID", theID)
        End With
        Try
            conn.Open()
            comm.ExecuteNonQuery()
        Catch ex As SqlException
            ' do something on the error
            ' do not hide it!
        End Try
    End Using
End Using

ソース

于 2012-11-09T15:25:23.300 に答える
1
UPDATE tbl
SET Field1 = @Value1, Field2 = @Value2
WHERE ....
于 2012-11-09T15:25:13.333 に答える