A partir de la version 5 es posible incluir en los modelos de O3 fuentes de datos definidas desde scripts de BeanShell.
Este lenguaje permite en particular utilizar jdbc para acceder a bases de datos desde el script obteniendo de esta forma un mayor control sobre las fuentes de datos en la construcción.
Con el siguiente codigo se muestra como acceder a la base de datos Hypersonic incluida en la distribución.
import java.sql.DriverManager; import org.hsqldb.jdbcDriver; import java.sql.SQLException; import java.sql.*; db_url = "jdbc:hsqldb:hsql://localhost:1701"; driver = "org.hsqldb.jdbcDriver"; user = "sa"; password = ""; sql_statement = "SELECT * FROM VINOS_VENTAS;"; ArrayList list = new ArrayList(); try { Class.forName(driver); Connection con = DriverManager.getConnection(db_url,user,password); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql_statement); while (rs.next()) { list.add(new Object[]{rs.getDate("FECHA"),rs.getInt("VINOCOD"),rs.getDouble("LITROS")}); } stmt.close(); con.close(); } catch ( e ) { e.printStackTrace(); } iterator = list.iterator();
Con el siguiente codigo se muestra como acceder a una base de datos SQL Server Express.
import java.sql.DriverManager; import org.hsqldb.jdbcDriver; import java.sql.SQLException; import java.sql.*; db_url = "jdbc:sqlserver://infogen01\\SQLEXPRESS;DatabaseName=Master"; driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; user = "sa"; password = "qapmoc8"; sql_statement = "select * from dbo.spt_values;"; ArrayList list = new ArrayList(); try { Class.forName(driver); Connection con = DriverManager.getConnection(db_url,user,password); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql_statement); while (rs.next()) { list.add(new Object[]{rs.getString("name"),rs.getInt("number")}); } stmt.close(); con.close(); } catch ( e ) { e.printStackTrace(); } iterator = list.iterator();