Visual Basic.NET - Super consulta SQL

 
Vista:

Super consulta SQL

Publicado por Toni (47 intervenciones) el 24/04/2007 12:09:35
Quiero Actualizar (si es que existe el valor en la tabla) o Insertar (si es que no existe el valor en mi tabla) unos registros.
Ahora mismo el código esta funcionando, pero creo que puedo optimizarlo.

Mi código es el siguiente:

comando = New SqlCommand("UPDATE Tabla Set................ WHERE Id = '" & txtid.text & "'")
comando.Connection = conexion
comando.ExecuteNonQuery()

comando2 = New SqlCommand("INSERT INTO Tabla ................ WHERE NOT EXISTS (SELECT * FROM Tabla WHERE Id = '" & txtid.text & "')")
comando2.Connection = conexion
comando2.ExecuteNonQuery()

De manera que ahora mismo por cada registro hago un Update e un Insert. ¿Existe alguna forma de controlar si la primera consulta se ha actualizado no me la segunda consulta?
Ya que tengo esta consulta dentro de un bucle y se repite muchas veces.

Muchas gracias por todo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Super consulta SQL

Publicado por thessen (298 intervenciones) el 24/04/2007 14:49:41
El método ExecuteNonQuery devuelve un entero que indica el número de registros afectados por la instrucción. De esta manera, si ejecutas el UPDATE y te devuelve un 0, es que esa actualización no ha afectado a ningún registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Super consulta SQL

Publicado por Toni (47 intervenciones) el 24/04/2007 15:21:08
Lo he provado y funciona de maravilla.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Super consulta SQL

Publicado por Samuel Orozco (2 intervenciones) el 20/12/2007 17:59:15
se supone executenonquery() devuelve los registros afectados de un insert, delete o update,
pues yo cuando lo ocupo, lo hace bien solo un detalle...
si envio un query fijo suponiendo
" update tab_alumnos set activo='0' where grupo='31' "
que es lo que pretendo, activar o desactivar a los alumnos de todo un grupo, si el grupo tiene 14 alumnos me marca 14 registros afectados,
hasta ahi todo bien,
el problema es que si lo vuelvo a ejecutar me vuelve a marcar 14 registros afectados, y yo lo que necesito es que si no hubo cambios en los registros los reconozca como tal o sea me marque los cero registros afectados, esto con la finalidad de poder controlar cuando realmente se afecte un registro, cualquier aportacion se las agradezco de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar