From: <car...@te...> - 2003-05-27 18:45:25
|
Hello: > I'm using sql statment, to check for concurrency as suggested in .NET > documentation: > "update table set ID=?, Item=? where (ID=?) and (Item=?)" > And 2 last parameters with System.Data.DataRowVersion.Original option. > Everything works fine. But it would be nice if command builder would > build a similal update command. Now it builds a plain update command > without concurrency implementation. > Or maybe there is some other way to implement concurrency? I'm reviewing this, i'm making tests using the Microsoft Odbc Provider and Firebird Provider, using this select command: SELECT EMPRESA,ALMACEN,NUMERO FROM ALBCB These are the update and delete commands generated by Microsoft Odbc Provider UPDATE ALBDT SET EMPRESA = ? , ALMACEN = ? , UNIDADES = ? , PRECIO = ? , IMPORTE = ? WHERE ( ((? = 1 AND EMPRESA IS NULL) OR (EMPRESA = ?)) AND ((? = 1 AND ALMACEN IS NULL) OR (ALMACEN = ?)) AND ((? = 1 AND UNIDADES IS NULL) OR (UNIDADES = ?)) AND ((? = 1 AND PRECIO IS NULL) OR (PRECIO = ?)) AND ((? = 1 AND IMPORTE IS NULL) OR (IMPORTE = ?)) ) DELETE FROM ALBDT WHERE ( ((? = 1 AND EMPRESA IS NULL) OR (EMPRESA = ?)) AND ((? = 1 AND ALMACEN IS NULL) OR (ALMACEN = ?)) AND ((? = 1 AND UNIDADES IS NULL) OR (UNIDADES = ?)) AND ((? = 1 AND PRECIO IS NULL) OR (PRECIO = ?)) AND ((? = 1 AND IMPORTE IS NULL) OR (IMPORTE = ?)) ) And the update and delete command generated with the Firebird Provider with the changes i have in my local tree: UPDATE ALBDT SET "EMPRESA" = ?, "ALMACEN" = ?, "UNIDADES" = ?, "PRECIO" = ?, "IMPORTE" = ? WHERE ( (("EMPRESA" IS NULL) OR ("EMPRESA" = ?)) AND (("ALMACEN" IS NULL) OR ("ALMACEN" = ?)) AND (("UNIDADES" IS NULL) OR ("UNIDADES" = ?)) AND (("PRECIO" IS NULL) OR ("PRECIO" = ?)) AND (("IMPORTE" IS NULL) OR ("IMPORTE" = ?)) ) DELETE FROM ALBDT WHERE ( (("EMPRESA" IS NULL) OR ("EMPRESA" = ?)) AND (("ALMACEN" IS NULL) OR ("ALMACEN" = ?)) AND (("UNIDADES" IS NULL) OR ("UNIDADES" = ?)) AND (("PRECIO" IS NULL) OR ("PRECIO" = ?)) AND (("IMPORTE" IS NULL) OR ("IMPORTE" = ?)) ) I think this can solve the problem, i'm right?? Can anybody make a test to this using the Microsoft Sql Server provider and send to the list the Update and Delete commands generated by the SqlCommandBuilder ??? -- Best regards Carlos Guzmán Álvarez Vigo-Spain "No tengo dones especiales.Sólo soy apasionadamente curioso" Albert Einstein, científico. |