2

これはおそらく非常に簡単な質問です。

しかし、私はそれを修正することはできません。@ID =列IDの場合は更新を試み、それ以外の場合はすべてを挿入します。

すべてを一文にまとめると、これだけでは機能しません

Cmd.CommandText = "UPDATE Locatie SET (Longitude = @Longitude, Latitude = @Latitude, Timestamp = @Timestamp) WHERE ID=@ID IF @@ROWCOUNT=0 INSERT INTO Locatie VALUES (@ID, @Longitude, @Latitude, @Timestamp)"
4

2 に答える 2

4

これは問題なく動作するはずです

Cmd.CommandText = "IF EXISTS (SELECT 1 FROM Locatie WHERE Id = @Id) " & Environment.NewLine & _
                  "  BEGIN UPDATE Locatie SET Longitude = @Longitude, Latitude = @Latitude, Timestamp = @Timestamp WHERE ID=@Id END " & Environment.NewLine & _
                  "ELSE " & Environment.NewLine & _
                  "   BEGIN INSERT INTO Locatie VALUES (@ID, @Longitude, @Latitude, @Timestamp) END "

おそらく(保守性のために)ストアドプロシージャを使用する方が良いでしょう。

于 2012-11-01T13:54:02.680 に答える
1

以下を試してください:

Cmd.CommandText = "UPDATE Locatie SET (Longitude = @Longitude, Latitude = @Latitude, Timestamp = @Timestamp) WHERE ID=@ID GO IF @@ROWCOUNT=0 begin INSERT INTO Locatie VALUES (@ID, @Longitude, @Latitude, @Timestamp) end Go"
于 2012-11-01T13:53:44.920 に答える