Ich habe eine Timestamp-Spalte in meiner Datenbank, die als Zeilenversion verwendet wird. Zu dem Zeitpunkt, zu dem Daten aus der Datenbank gezogen werden, erhalten wir auch eine Zeilenumsetzung, die in Byte [] umgewandelt wurde. Bis zu diesem Zeitpunkt funktioniert alles wie erwartet.how to byte [] zu timestamp
Zum Zeitpunkt der Datenaktualisierung würde ich gerne (in einer gespeicherten Prozedur) überprüfen, ob die Zeilenversion die gleiche ist oder nicht, also eine, die vom Code übergeben wird, mit einer, die in der Datenbank gespeichert ist . Wenn das anders ist, werde ich das Update abbrechen, ansonsten aktualisiert es die Daten.
Jetzt ist mein Problem, wie Byte [] an eine gespeicherte Prozedur übergeben. Der Parametertyp in der gespeicherten Prozedur ist der Zeitstempel.
Hinweis: Ich mache alle db-Operationen in C# mit Enterprise-Bibliothek. Ich kann die gespeicherte Prozedur oder die Datentypen nicht ändern. Es ist eingeschränkt.
Was ist Ihr Byte-Zeitstempelformat? Oder, wie wird der Zeitstempel zu Byte [] an erster Stelle? Vielleicht ist es [diese] (https://stackoverflow.com/questions/10107625/6-bytes-timestamp-to-datetime)? – john
Die Zeitstempel-Syntax ist veraltet. Diese Funktion wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Vermeiden Sie die Verwendung dieser Funktion in neuen Entwicklungsarbeiten, und planen Sie, Anwendungen zu ändern, die diese Funktion derzeit verwenden. https://docs.microsoft.com/en-us/sql/t-sql/data-types/rowversion-transact-sql – Aaron
@john Ich bekomme datarow, von dem ich row_version in Byte-Array wie folgt konvertieren: dr ["row_version "] == DBNull.Value? neues Byte [1]: (byte []) dr ["row_version"]; – user2645738