JDBC: Inserción y actualización


Después de haber aprendido lo sencillo que es implementar una sentencia SELECT vamos a estudiar INSERT Y UPDATE.

INSERT

La diferencia más importante respecto a SELECT es que usamos la función executeUpdate(). En el siguiente ejemplo damos por supuesto que se han creado previamente los objetos de la clase Connection (con) y Statement (sentencia):


	int add_cliente( String codigo, String nombre, String ape1, String ape2, int edad ) {
		try {
			String orden_SQL = "INSERT INTO CLIENTE VALUES " + "('" + codigo +
					"', '" + nombre + "', '" + ape1 + "', '" + ape2 + "', " + edad + ")";

			Statement sentencia = con.createStatement();
			int fila = sentencia.executeUpdate(orden_SQL);
			sentencia.close();
			return fila;
		}
		catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}

executeUpdate() devuelve el número de filas afectadas. Evidentemente, en nuestro ejemplo con INSERT si se produce la inserción devuelve uno y cero en caso de error. Conviene recordar que 'cliente.codigo' está definida como clave primaria (si hay intentos de insertar codigos repetidos se desencadena una excepción)

En este ejemplo se han insertado todos los valores en el orden en que están definidos los campos de la tabla. Podemos hacerlo de otra forma para insertar un registro que sólo tenga definido el campo 'cliente.codigo':


	INSERT INTO cliente SET codigo = '31JK'


UPDATE

En el caso de UPDATE vamos a realizar un ejemplo en el que incrementamos el valor de las ventas un 10%:


	....
	update_venta( 1.1 );
	....

	/***** UPDATE de registros, devuelve el número de registros actualizados ****/
	int update_venta( double incremento ) {
		try {
			String orden_SQL = "UPDATE venta SET precio = precio * " + incremento;
			Statement sentencia = con.createStatement();
			int fila = sentencia.executeUpdate(orden_SQL);
			sentencia.close();
			return fila;
		}
		catch (SQLException e) {
			e.printStackTrace();
			return 0;
		}
	}

Si deseasemos realizar una actualización selectiva (por ejemplo, para las ventas mayores de 4500), tendremos que utilizar la clausula WHERE.


Volver al índice