Accediendo a bases de datos desde BeanShell

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();