Código de Ejemplo para Insertar una Fila

El siguiente ejemplo de código es un programa completo que debería funcionar si tenemos un driver JDBC 2.0 que implemente una hoja de resultados desplazable.

Hay algunas cosas que podríamos observar sobre el código:

  1. El objeto ResultSet, uprs es actualizable, desplazable y sensible a los cambios hechos por ella y por otros. Aunque es TYPE_SCROLL_SENSITIVE, es posible que los métodos getXXX llamados después de las inserciones no recuperen los valores de la nuevas filas. Hay métodos en el interface DatabaseMetaData que nos dirán qué es visible y qué será detectado en los diferentes tipos de hojas de resultados para nuestro driver y nuestro controlador de base de datos.
  2. Después de haber introducido los valores de una fila con los métodos updateXXX, el código inserta la fila en la hoja de resultados y en la base de datos con el método insertRow. Luego, estándo todavía en la "fila de inserción", selecciona valores para otra nueva fila.
import java.sql.*;

public class InsertRows {
	public static void main(String args[]) {
		String url = "jdbc:mySubprotocol:myDataSource";
		Connection con;
		Statement stmt;
	try {
		Class.forName("myDriver.ClassName");
	} catch(java.lang.ClassNotFoundException e) {
		System.err.print("ClassNotFoundException: "); 
		System.err.println(e.getMessage());
	}
	try {
		con = DriverManager.getConnection(url, "myLogin", "myPassword");
		stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
					   ResultSet.CONCUR_UPDATABLE);				
		ResultSet uprs = stmt.executeQuery("SELECT * FROM COFFEES");
		uprs.moveToInsertRow();
		uprs.updateString("COF_NAME", "Kona");
		uprs.updateInt("SUP_ID", 150);
		uprs.updateFloat("PRICE", 10.99f);
		uprs.updateInt("SALES", 0);
		uprs.updateInt("TOTAL", 0);
		uprs.insertRow();
		uprs.updateString("COF_NAME", "Kona_Decaf");
		uprs.updateInt("SUP_ID", 150);
		uprs.updateFloat("PRICE", 11.99f);
		uprs.updateInt("SALES", 0);
		uprs.updateInt("TOTAL", 0);
		uprs.insertRow();
		uprs.beforeFirst();
		System.out.println("Table COFFEES after insertion:");
		while (uprs.next()) {
			String name = uprs.getString("COF_NAME");
			int id = uprs.getInt("SUP_ID");
			float price = uprs.getFloat("PRICE");
			int sales = uprs.getInt("SALES");
			int total = uprs.getInt("TOTAL");
			System.out.print(name + "   " + id + "   " + price);
			System.out.println("   " + sales + "   " + total);
		}

		uprs.close();
		stmt.close();
		con.close();	

	} catch(SQLException ex) {
		System.err.println("SQLException: " + ex.getMessage());
	}
}

Ozito