An Implementation of Predicate
From Java Example Source Code
Contents |
[edit] Overview - An Implementation of Predicate
This Java example program introduces an implementation of predicate.
[edit] Java Source Code
- Package: parsian.mahmoud.oracle
- File: Main1.java
package parsian.mahmoud.oracle; /* * JDBC Recipes: A Problem-Solution Approach (Problem-Solution Approach) (Hardcover) by Mahmoud * Parsian * * * # Publisher: Apress (September 15, 2005) # Language: English # ISBN: 1590595203 */ import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import javax.sql.RowSet; import javax.sql.rowset.FilteredRowSet; import javax.sql.rowset.Predicate; import com.sun.rowset.FilteredRowSetImpl; public class Main1 { public static void main(String[] args) throws Exception { Connection conn = getHSQLConnection(); System.out.println("Got Connection."); Statement st = conn.createStatement(); st.executeUpdate("create table survey (id int,name varchar, age int);"); st.executeUpdate("insert into survey (id,name,age ) values (1,'nameValue', 10)"); st.executeUpdate("insert into survey (id,name,age ) values (2,'anotherValue', 100)"); FilteredRowSet frs = new FilteredRowSetImpl(); frs.setUsername("sa"); frs.setPassword(""); frs.setUrl("jdbc:hsqldb:data/tutorial"); frs.setCommand("SELECT id, name, age FROM survey"); frs.execute(); System.out.println("--- Unfiltered RowSet: ---"); while (frs.next()) { System.out .println(frs.getRow() + " - " + frs.getString("id") + ":" + frs.getString("name") + ":" + frs.getInt("age")); } // create a filter that restricts entries in // the age column to be between 7 and 10 AgeFilter filter = new AgeFilter(7, 10, 3); // set the filter. frs.beforeFirst(); frs.setFilter(filter); // go to the beginning of the Rowset System.out.println("--- Filtered RowSet: ---"); // show filtered data while (frs.next()) { System.out .println(frs.getRow() + " - " + frs.getString("id") + ":" + frs.getString("name") + ":" + frs.getInt("age")); } System.out.println("--- Try to insert new records ---"); // Try to add an employee with age = 90 (allowed by filter) frs.moveToInsertRow(); frs.updateString(1, "999"); frs.updateString(2, "Andre"); frs.updateInt(3, 90); frs.insertRow(); frs.moveToCurrentRow(); frs.acceptChanges(); // try to add an survey with age = 65 (not allowed by filter) frs.moveToInsertRow(); frs.updateString(1, "123"); frs.updateString(2, "Jeff"); frs.updateInt(3, 65); frs.insertRow(); frs.moveToCurrentRow(); frs.acceptChanges(); // scroll to first row of rowset frs.beforeFirst(); // display rows in FilteredRowset System.out.println("FilteredRowSet after trying to insert Jeff (age 65) and Andre (age 90):"); while (frs.next()) { System.out .println(frs.getRow() + " - " + frs.getString("id") + ":" + frs.getString("name") + ":" + frs.getInt("age")); } frs.close(); st.close(); frs.close(); } private static Connection getHSQLConnection() throws Exception { Class.forName("org.hsqldb.jdbcDriver"); System.out.println("Driver Loaded."); String url = "jdbc:hsqldb:data/tutorial"; return DriverManager.getConnection(url, "sa", ""); } public static Connection getMySqlConnection() throws Exception { String driver = "org.gjt.mm.mysql.Driver"; String url = "jdbc:mysql://localhost/demo2s"; String username = "oost"; String password = "oost"; Class.forName(driver); Connection conn = DriverManager.getConnection(url, username, password); return conn; } public static Connection getOracleConnection() throws Exception { String driver = "oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:databaseName"; String username = "userName"; String password = "password"; Class.forName(driver); // load Oracle driver Connection conn = DriverManager.getConnection(url, username, password); return conn; } } class AgeFilter implements Predicate { private int lowAge; private int highAge; private int columnIndex; private String columnName; public AgeFilter(int lowAge, int highAge, int columnIndex, String columnName) { this.lowAge = lowAge; this.highAge = highAge; this.columnName = columnName; this.columnIndex = columnIndex; } public AgeFilter(int lowAge, int highAge, int columnIndex) { this(lowAge, highAge, columnIndex, "age"); } public boolean evaluate(Object value, String columnName) { boolean evaluation = true; if (columnName.equalsIgnoreCase(this.columnName)) { int columnValue = ((Integer) value).intValue(); if ((columnValue >= this.lowAge) && (columnValue <= this.highAge)) { evaluation = true; } else { evaluation = false; } } return evaluation; } public boolean evaluate(Object value, int columnNumber) { boolean evaluation = true; if (columnIndex == columnNumber) { int columnValue = ((Integer) value).intValue(); if ((columnValue >= this.lowAge) && (columnValue <= this.highAge)) { evaluation = true; } else { evaluation = false; } } return evaluation; } public boolean evaluate(RowSet rs) { if (rs == null) { return false; } FilteredRowSet frs = (FilteredRowSet) rs; boolean evaluation = false; try { int columnValue = frs.getInt(this.columnIndex); if ((columnValue >= this.lowAge) && (columnValue <= this.highAge)) { evaluation = true; } } catch (SQLException e) { return false; } return evaluation; } }
[edit] What Result You Can Get
Coming soon...
[edit] Required External Libraries and/or Files for this Java Example
In order to run this Java example, one of the following libraries may be required: In order to run this example program, one of the following libraries may be required:
- MySQL JDBC driver. You can download it from MySQL Connector/J — for connecting to MySQL from Java
- Oracle JDBC driver. You can download it from JDBC driver for Oracle.
- MSSQL JDBC driver. There are several vendors provide JDBC driver for MSSQL, you should chose one of them:
- jTDS - SQL Server and Sybase JDBC driver. It is an open source JDBC 3.0 Type 4 driver for Microsoft SQL Server (6.5, 7.0, 2000 and 2005) and Sybase. jTDS is the fastest JDBC driver for MS SQL Server and is a complete implementation of the JDBC spec. You can download it from jTDS - SQL Server and Sybase JDBC driver
- MSSQL JDBC driver from Microsoft.
- JDBC driver for MSSQL 2000. You can download it from SQL Server 2000 Driver for JDBC Service Pack 3
- JDBC driver for MSSQL 2005. You can download it from Microsoft SQL Server 2005 JDBC Driver 1.2
- PostgreSQL JDBC driver. You can download it from PostgreSQL JDBC driver. It is a pure Java (Type IV) implementation.
- HSQLDB JDBC Driver. HSQLDB is the leading SQL relational database engine written in Java. It has a JDBC driver and supports a rich subset of ANSI-92 SQL plus SQL 99 and 2003 enhancements. You can download it from hsqldb.
[edit] How to Run this Java Example Program
We recommend running this Java example program with Eclipse.
For assistance in working with Eclipse, please see How to Run Java Program with Eclipse.
It's fairly easy.
[edit] Question & Answer
Any question?
Click edit and post your question or answer here.
