es recomendable utilizar commit ?

01/03/2004 - 14:26 por Aragorn \(CL\) | Informe spam
Hola Sres.
les cuanto que tengo una pagina en donde ingreso un registro
de cabecera y n registros de detalle, y lo uqe necesito es buscar una forma
en la que no se produzcan inconsistencias, me han recomendado que use Commit
o Rollback, pero para esto debo tener una conexion abierta por mucho tiempo,
y esto en asp.net no creo que sea bueno, y la otra opción es utilizar tablas
temporales


alguien me puede recomendar alguna buena opción ?.


Gracias.

Aragorn

Preguntas similare

Leer las respuestas

#1 Luis Alfredo Lozada Portal
02/03/2004 - 01:33 | Informe spam
Pero para que vas a mantener una conexion abierta, no
entiendo?, lo ideal es que utilices Stored Procedures
para insertar los datos de la cabecera y el detalle
correcto?. bueno la idea es que hasta que en la interfaz
de usuario no se terminen de ingresar los datos, tu no
debes de abrir ninguna conexion, recien cuando has
concistenciado los datos, tu debes de ejecutar estos
stored procedures, para lo cual te recomiendo si usas ASP
NET con VBNET lo ideal sería si solo manejas 2 capas; que
trabajes con el objeto transaction y lo pases como
parametro a tus objetos command que ejecutaran tu
transacion. Luego de ejecutar tus comandos (stored
procedures) confirma la transaccion con el metodo commit
del objeto transaction de lo contrario si ocurrio alguna
excepcion debes de utilizar el metodo rollback para
deshacer las operaciones.


Saludos,


Luis Alfredo Lozada Portal
Instituto Tecnológico del Norte
Trujillo - Perú
Hola Sres.
les cuanto que tengo una pagina en donde


ingreso un registro
de cabecera y n registros de detalle, y lo uqe necesito


es buscar una forma
en la que no se produzcan inconsistencias, me han


recomendado que use Commit
o Rollback, pero para esto debo tener una conexion


abierta por mucho tiempo,
y esto en asp.net no creo que sea bueno, y la otra


opción es utilizar tablas
temporales


alguien me puede recomendar alguna buena opción ?.


Gracias.

Aragorn


.

Respuesta Responder a este mensaje
#2 Luis Alfredo Lozada Portal
02/03/2004 - 01:33 | Informe spam
Pero para que vas a mantener una conexion abierta, no
entiendo?, lo ideal es que utilices Stored Procedures
para insertar los datos de la cabecera y el detalle
correcto?. bueno la idea es que hasta que en la interfaz
de usuario no se terminen de ingresar los datos, tu no
debes de abrir ninguna conexion, recien cuando has
concistenciado los datos, tu debes de ejecutar estos
stored procedures, para lo cual te recomiendo si usas ASP
NET con VBNET lo ideal sería si solo manejas 2 capas; que
trabajes con el objeto transaction y lo pases como
parametro a tus objetos command que ejecutaran tu
transacion. Luego de ejecutar tus comandos (stored
procedures) confirma la transaccion con el metodo commit
del objeto transaction de lo contrario si ocurrio alguna
excepcion debes de utilizar el metodo rollback para
deshacer las operaciones.


Saludos,


Luis Alfredo Lozada Portal
Instituto Tecnológico del Norte
Trujillo - Perú
Hola Sres.
les cuanto que tengo una pagina en donde


ingreso un registro
de cabecera y n registros de detalle, y lo uqe necesito


es buscar una forma
en la que no se produzcan inconsistencias, me han


recomendado que use Commit
o Rollback, pero para esto debo tener una conexion


abierta por mucho tiempo,
y esto en asp.net no creo que sea bueno, y la otra


opción es utilizar tablas
temporales


alguien me puede recomendar alguna buena opción ?.


Gracias.

Aragorn


.

Respuesta Responder a este mensaje
#3 Ariel Popovsky
02/03/2004 - 14:46 | Informe spam
Para hablar con propiedad, lo que te han recomendado es que uses una
transacción. Para una operación que involucra varios accesos a la base de
datos, es casi imprescindible que lo hagas en el contexto de una
transacción.
Actualmente, es probable que estes abriendo la conexión, cargues la
cabecera, el detalle y la cierres. Lo único que tendrías que hacer es antes
de cargar la cabecera llamar a BeginTransaction en el objeto conexión, este
método devuelve un objeto con interfaz IDbTransaction. Cuando terminas,
llamas a Commit o Rollback si hubo un error.
La conexión esta abierta el mismo tiempo que si no usas una transacción.

Un ejemplo de la MSDN:
public void RunSqlTransaction(string myConnString)
{
SqlConnection myConnection = new SqlConnection(myConnString);
myConnection.Open();

SqlCommand myCommand = myConnection.CreateCommand();
SqlTransaction myTrans;

// Start a local transaction
myTrans = myConnection.BeginTransaction();
// Must assign both transaction object and connection
// to Command object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;

try
{
myCommand.CommandText = "Insert into Region (RegionID,
RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID,
RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back
the transaction.");
}
}

Console.WriteLine("An exception of type " + e.GetType() +
" was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}


Saludos!
Ariel Popovsky
Buenos Aires
"Aragorn (CL)" wrote in message
news:eIl%23Lh4$
Hola Sres.
les cuanto que tengo una pagina en donde ingreso un


registro
de cabecera y n registros de detalle, y lo uqe necesito es buscar una


forma
en la que no se produzcan inconsistencias, me han recomendado que use


Commit
o Rollback, pero para esto debo tener una conexion abierta por mucho


tiempo,
y esto en asp.net no creo que sea bueno, y la otra opción es utilizar


tablas
temporales


alguien me puede recomendar alguna buena opción ?.


Gracias.

Aragorn


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida