Searching in ResultSet
Hi.
I'm new in Java, especially JDBC technology. I'm creating simple oracle client which retrieves huge load of data. I've just wondered is it possibe to search for data in resultset with a sql query ?
Thanks in advance,
Regards.
No.
Instead, design your SQL query to do the search on the database side and therefore produce a small ResultSet. That is what a database is designed for!. Your only other choice is retrieve all the data and convert them to Java objects, and search through the Java objects. This will always be much much slower, perhaps even 1,000,000 times slower.
Similar Messages
-
MDM Search From ResultSet after upgrade
Hello, I am trying to modify a custom iview after an mdm business package upgrade to 5.5 sp06 and I'm getting an error I have not been able to resolve.
A URL event is passing the [MDM Search] parameter from the ResultSet iview to my custom iview. It gets to the point of the following code and terminates at the GetResultSet line with a NullPointerException. The search is being filled I tested this as are all of the other parameters.
Search search = new Search();
StringRef stringRef = new StringRef(searchString);
search.SetArchive(stringRef);
A2iResultSet rs = catalogData.GetResultSet(search, resultSetDefinition, sortField, true, 0);
if I edit the search line to say:
Search search = new Search("Products");
it works perfectly but obviously cuts out the search criteria. this code was working perfectly pre upgrade. Can anyone give any pointers as to the reason
Thanks
David
Edited by: David R. Evans on Apr 17, 2008 7:30 PMHi Jitesh
Thanks for all your help so far
Search s=new Search("Products");
TableParameter tp=new TableParameter("Products");
tp.setArchieve(stringRef);
s.add(tp);
A2iResultSet rs = catalogData.GetResultSet(s, resultSetDefinition, sortField, true, 0);
I tried to above code and it again failed with nullpointerexceptions
I tried using the FreeFormTableParameter instead and this failed, I tried he following code:
Search s=new Search("Products");
TableParameter tp=new TableParameter("Products");
SearchParameter sp = tp;
sp.setArchieve(stringRef);
s.add(sp);
A2iResultSet rs = catalogData.GetResultSet(s, resultSetDefinition, sortField, true, 0);
This also failed with the same error. -
Hi
I am executing a SQL query to get two columns from USR table and store in ResultSet [SELECT USR_KEY,USR_LOGIN from USR]
Now can I do a search on this resultset to find out the USR_LOGIN where the USR_KEY is 'X'.
I know I can go for searching the user using OIM API but I need to go by the approach mentioned above. Can anyone help me in searching record in resultset.You can use below method to iterate a tcResultSet
public void printResultSet(tcResultSet rs) throws tcAPIException, tcColumnNotFoundException {
String methodName = "printResultSet";
logger.setMethodStartLog(className, methodName);
logger.debug(className, methodName, "COUNT = " + rs.getRowCount());
String[] cols = rs.getColumnNames();
for (int i = 0; i < rs.getRowCount(); ++i) {
rs.goToRow(i);
for (int j = 0; j < cols.length; j++) {
if (cols[j].indexOf("Row Version") == -1) {
logger.debug(className, methodName, cols[j] + "\t\t:"
+ rs.getStringValue(cols[j]));
logger.setMethodFinishLog(className, methodName);
Thanks
Suren -
Problem:Can't instantiate class
I tried for many hours to solve the problem but in vain.
here is the Exception i got from tomcat:javax.servlet.ServletException: javax.servlet.jsp.JspException: javax.faces.FacesException: javax.faces.FacesException: Can't instantiate class: 'core.walid.NwindManagedBean'.. core.walid.NwindManagedBean
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:844)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.index_jsp._jspService(index_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
cause m�re
javax.faces.el.EvaluationException: javax.faces.FacesException: javax.faces.FacesException: Can't instantiate class: 'core.walid.NwindManagedBean'.. core.walid.NwindManagedBean
com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:206)
com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
javax.faces.component.UIData.getValue(UIData.java:527)
javax.faces.component.UIData.getDataModel(UIData.java:856)
javax.faces.component.UIData.setRowIndex(UIData.java:379)
com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:65)
javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:683)
javax.faces.component.UIData.encodeBegin(UIData.java:681)
javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:591)
javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:543)
com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:491)
org.apache.jsp.index_jsp._jspx_meth_h_dataTable_0(index_jsp.java:161)
org.apache.jsp.index_jsp._jspx_meth_c_view_0(index_jsp.java:116)
org.apache.jsp.index_jsp._jspService(index_jsp.java:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)here is the bean i don't see any problelme it uses JDBC to access the database/*
* NwindManagedBean.java
* Created on 4 mars 2007, 01:02
package Core.walid;
import java.sql.*;
import javax.sql.*;
import java.util.ArrayList;
import java.util.Collection;
import java.io.*;
import javax.servlet.jsp.jstl.sql.*;
* @author walid
public class NwindManagedBean implements Serializable{
private String tableName="Customers";
private ResultSet resultSet;
private Connection connection;
/** Creates a new instance of NwindManagedBean */
public NwindManagedBean() {
public String getTableName(){
return tableName;
public void setTableName(String tableName){
this.tableName=tableName;
public void open(){
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:Nwind";
String username = "";
String password = "";
try{
Class.forName(driver);
connection =DriverManager.getConnection(url,username,password);}
catch(Exception e){System.out.println(e);}
public void search(){
try{ Statement statement=connection.createStatement();
String query ="select * from "+tableName;
resultSet=statement.executeQuery(query);
catch(Exception cnfe) {};
public ResultSet getResultSet(){
open();
search();
return resultSet;
public void showResults(){
int i=1;
try{ while(resultSet.next())
System.out.println(resultSet.getString(i));
i++;
catch(Exception e){System.out.println("erreur sql"+e);}
}i declared the bean in faces-config<faces-config>
<managed-bean>
<managed-bean-name>NwindManagedBean</managed-bean-name>
<managed-bean-class>core.walid.NwindManagedBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>and finally the jsf page to list the database contents<%@ taglib uri="http://java.sun.com/jsf/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<HEAD><TITLE>Northwind Customers</title>
</HEAD>
<body>
<center>
<table border="5">
<tr><th class="Northwind customers"></th></tr>
</table>
<p>
<c:view>
<h:dataTable value="#{NwindManagedBean.resultSet}"
var="dbRow"
border="1"
>
<h:column>
<c:facet name="header">
<c:verbatim>Company name</c:verbatim>
</c:facet>
<h:outputText value="#{dbRow.CompanyName}"/>
</h:column>
<h:column>
<c:facet name="header">
<c:verbatim>Address</c:verbatim>
</c:facet>
<h:outputText
value="#{dbRow.Address}"/>
</h:column>
<h:column>
<c:facet name="header">
<c:verbatim>City</c:verbatim>
</c:facet>
<h:outputText
value="#{dbRow.City}"/>
</h:column>
</h:dataTable>
</c:view>
</center>
</body>
</html>Hello,
I'm not sure, but i would try to put the package only in lowercase.
Your class pakageis declared with first Upper case letter.
And in you faces-config file, you declared with lower case.
Note : it's recommanded to use only lower case for package name.
Regards,
Sebastien Degardin -
package library.client;
import javax.naming.InitialContext;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import javax.ejb.*;
import javax.naming.*;
import javax.swing.*;
import library.common.*;
@SuppressWarnings("serial")
public class LibraryClient extends JFrame implements ActionListener {
private static LibraryInterface li;
private JTextField book_author = new JTextField(10);
private JTextField book_title = new JTextField(10);
private JTextField book_isbn = new JTextField(10);
private JLabel author_label = new JLabel("Podaj autora:");
private JLabel book_title_label = new JLabel("Podaj tytul ksiazki");
private JLabel isbn_label = new JLabel("Podaj ISBN");
private JTextArea display_books = new JTextArea(20,50);
private JButton search = new JButton("Search");
private ResultSet resultset;
public LibraryClient() {
this("DEFAULT_CONTEXT");
private JPanel createPanel1(){
JPanel panel = new JPanel();
panel.add(author_label);
panel.add(book_author);
panel.add(book_title_label);
panel.add(book_title);
panel.add(isbn_label);
panel.add(book_isbn);
panel.add(search);
////search.setActionCommand("ISBN");
search.addActionListener(this);
return panel;
private JPanel createPanel2(){
JPanel panel = new JPanel();
panel.add(display_books);
return panel;
private JPanel createPanels(){
JPanel panel = new JPanel();
//Use default FlowLayout.
panel.setLayout(new BorderLayout());
panel.add(createPanel1(), BorderLayout.NORTH);
panel.add(createPanel2(), BorderLayout.SOUTH);
return panel;
public LibraryClient(String appType) {
init(appType);
JFrame frame = new JFrame("Library");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// /final Table table = new Table();
frame.setContentPane(createPanels());
frame.pack();
// /f.setLocationRelativeTo(null);
frame.setVisible(true);
public void actionPerformed(ActionEvent e) {
try {
display_books.setText("");
display_books.setText("Wyszukane Ksiazki\n");
if(!book_author.getText().equals("")){
resultset=li.getBookByAuthor(book_author.getText());
}else if(!book_title.getText().equals("")){
resultset=li.getBookByName(book_title.getText());
}else if(!book_isbn.getText().equals("")){
resultset=li.getBookByISBN(book_isbn.getText());
}else {
System.out.println("Before->resultset=li.getAllBooks()");
resultset=li.getAllBooks();
System.out.println("After->resultset=li.getAllBooks()");
while(resultset.next()){
System.out.println("in while resultset.next()");
String name = resultset.getString("name");
String author =resultset.getString("author");
String isbn = resultset.getString("ISBN");
display_books.append("\n"+ name + " " + author +" "+ isbn);
} catch(Exception exc) { exc.printStackTrace(); }
private void init(String type) {
if (type.equals("JAVA_APP")) li = new library.ejb.LibraryBean();
else if (type.equals("JAVA_CLIENT")) {
try {
InitialContext ic = new InitialContext();
li = (LibraryInterface) ic.lookup("library.common.LibraryInterface");
} catch (NamingException e) {
e.printStackTrace();
public static void main(String[] args) {
if (args.length >= 1) new LibraryClient(args[0]);
else new LibraryClient();
}it throws the exception when it gets to
any of the functions
resultset=li.getBookByAuthor(book_author.getText());
resultset=li.getBookByName(book_title.getText());
resultset=li.getBookByISBN(book_isbn.getText());
resultset=li.getAllBooks();
Please help
Thank YouHi,
I also get the same error.have you got the solution,fi so explain me how to rectify the error
Regards
SamyMohan -
OAKeyflexBean with Codecombination region
Hi All,
I am using OAKeyflexBean to display the key flex field segments. I am having a flex field in OAF page which has cost allocation keyflex attached. when the user click on the LOV, there is a new popup window will be opened and it will display all the segments with create option. This is working very fine as i want.
But, there is a region in the bottom which always shows all the existing combinations. suppose if i give any value in segment 4 and click on search, the result region gives all the existing combinations which has segment4 value... I don't what this to happen.. Is there any way to search only segment4. I mean, if i give value in segment4 and click on search, the resultset should display only the combination exist with segment4 value. not like it should display all the records which has segment4 value.
Is there any way to hide that result region??
Please give me your suggestions.
Thanks in Advance.
ManoHi,
can you try this? don't navigate to update page enter some crieteria and then click on GO and then again press clear button and then again click on GO and check, is it working fine?
This works fine, the issue when I navigate back from update page. please find the below code in processFormRequest
SearchCO
if("update".equals(event))
pageContext.setForwardURL("OA.jsp?page=/xxx/oracle/apps/..../webui/UpdatePG
, null, (byte)0, null, null, true, "Y", (byte)99);
UpdateCO
if(pageContext.getParameter("Cancel") != null)
am.invokeMethod("rollback");
pageContext.forwardImmediately("OA.jsp?page=/xxx/oracle/apps/...../webui/SearchPG"
, null, (byte)0, null, null, true, "N");
public void rollback()
Transaction txn = getTransaction();
if(txn.isDirty())
txn.rollback();
Anyway Thanks for reply.
Thanks,
Nooker Satya -
Search data into ResultSets to genrate a complex report
Hi,
I am writing a report called "Product Flow". The report headings are follows
prodcode prod name opening qty purchase_qty sales_qty closing_qty
=============================================================
To achieve this, I need to know the products, their opening qty, their purchase qty, sales qty and finally I will I will calculate the closing stock.
All this information is into different tables. I want to create 4-5 resultsets and then take the prodcut's resultset and scroll into it, take product one by one and then search its details into other resultset of opening, purchase and sales resultsets
How can I do it with resultsets? can anyone guide me? I am very much new for Java.
Thanks
OMkarDear,
Evenif I use SQL join. While designing the report finally, do I not have to write some code to compare and search some data into various resultsets or some kind of collections?
For example, in the above report, when I want to display report on screen, I will have to take the list of product and then search its values into tables and display it on the screen. So for this, do I not have to take the resultset of product table (rs) which will give me a list of product.
use while (rs.next()) >
take each product code
search the values in other resultsets (to search these values in actual table may be time consuming becasue of huge size of table. If there are 500 products in the table, I will have to use the table for 500 times using SQL.
Finally display the report on screen.How can I get more information about the collection type of resultset as u mentioned in the first reply? I will read the tutorials on SQL joins as you suggested and see if I can use it for this report.
Thanks for the reply. I would high appreciate if you can guide me to achieve my aims of project I am doing my studies.
Regards
OMkar -
Push MDM search results from webdynpro to portal's standard ResultSet iView
Hi,
I have gone thru a lot of SDN information, blogs and PDFs
regarding the usage of EPCF, EPCM for communication between
Webdynpro and Portal utlizing portal eventing phenomenon.
My requirement a.k.a. predicament and grief::
I get back mdm search results in webdynpro app, using a
specialized search strategy to MDM repository. I need to
ship these resuls off to the standard out-of-box
portal's MDM ResultSet iView (which is a part of portal's
MDM business package).
I haven't had much success getting crisp resolution to
satisfy my requirements. In my WD code, I know, I need
to put some sort of ?event-generating-2-liner-code? that
sends my results to portal's standard iView.
Surely, I can send just recordIDs or I can send the actual
results. I get 5 fields per record of Material's table.
Once the ResultSet-iView displays the search results,
my responsibility is over. Now onwards, portal's standard
business package will take over from there for further user
interacitons, like accessing item details etc..etc..
Any and all help is highly appreciated.
-Shashank DateNo replies............yet.....It's been 2 days now.....
Can someone provide some clues?
thx.
-Shashank Date -
Pass search parameter to ResultSet iView.
Hi,
I am using standard MDM WebDynpro Components in which requirement is not to use Std. Search iView and pass search parameter say "xxxx" to Std. Result Set iView to show the result for "xxxx".
Please let me know how shall I pass the value or default the search criteria in resultset
- Akshayfine , but then ur record ids are selected based on a search parameter - isnt it ??
how will then get the record ids , without knowing what to set
you have to use search component here in the program as a pre-requisite !
this is like calling a webservice - with the java server down
thanks
-Adrivit -
Searching for String literals in a ResultSet
Hi! I am currently working in a little project in which one functionallity should be the possibility to search for customers over a special dialog. This dialog consists of a JTextField and a JTable. Now when the user enters e.g. 'a' in the textfield all the customers which include an 'a' at the beginning of their name should be displayed in the JTable. When the user enters a 'b' addtionally all users which fit the condition 'ab' are shown. Currently I requery the DB every time a key is pressed. But this is not very performant over the network. Is there a way to store a buffered ResultSet in RAM and make queries on this ResultSet?
Thx...but there must be a easier way to deal with it!Either you have all the data in the GUI or you don't. If you have it there then you have to get all of it. And then do something with it. If you don't get it all, then you are going to have to do a query each time. There is no other solution.
You could do a partial solution, for example do the first query after they type the first letter and then after that handle the data yourself.
(Keep in mind that this sort of GUI is 'really cool' but generally serves no pratical purpose particularily for large businesses. Day to day work doesn't support such usage.) -
Multiple Field field search with multiple resultset
I have 10 controls in a form and when a control is selected the rest of controls are re-populated
Here's my table structure
Field1
Field2
Field3
Field4
Field5
Field6
Field7
Field8
Field9
Field10
Bus
Tyre
Steering
Engine
Gear
Fuel
MultiSeat
Bus
Door
Steering
Engine
Gear
Fuel
MultiSeat
Car
Tyre
Steering
Engine
Gear
Fuel
2 Row Seat
Car
Door
Steering
Engine
Gear
Fuel
2 Row Seat
Bike
Tyre
Handbar
Engine
Gear
Fuel
Single Seat
Pillion
Cycle
Tyre
Handbar
Pedalling
Single Seat
Carrier
Each field is dependent on other field. By default DISTINCT rows in each field is returned as a result set as below:
select distinct(field1) from table
select distinct(field2) from table
Upon selecting any of the item from the dropdown rest of the dropdowns are bound.
Is there any simplistic approach available?Hi
Try this
Create a
datraview for above table in .net
Then use
ToTable() method of datagridview which return datatable
to get distinct value pass true in
toTable() method which return distinct row set for column specified in toTable method
Mark as answer if you find it useful
Shridhar J Joshi Thanks a lot -
I'm getting desperate for a solution to this problem (as is the rest of the development team!).
Basically we've been trying to create a system that automatically assigns values (frequencies) to objects (nodes) based on a rule set. Each node contains a varying number of sub-objects (radios) and each radio needs one frequency. The database has been set up and has test data for our Solution class to go through. However, we've run into an odd problem where our ResultSets are suddenly closing.
The classes work like this:
Database Broker (handles connection to DB, as well as executeQuery and executeUpdate statements.)
Entry Broker (Holds all SQL statements for data retrieval in various methods. Each method contains an SQL statement to access data, and code to format that data into something useable by the main class.
Solution/Main class (Contains methods to use the data from the Entry Broker to test valid solutions. Certain rules apply to assigning frequencies to radios and this class ensures that the data applies to these rules before it writes the data back to the DB (via the EntryBroker).
The problem we continually run into is that whilst the ResultSets work fine in the Entry Broker, they are closed when they return to the Main class.
Here's the catch: It seems in most cases that only the FIRST ResultSet returned in each method is closed, the remaining ResultSets work fine. We worked around this problem by creating a 'dummy' ResultSet, which obtained data from the database which was never used (the project name). We put this in its own try catch bracket so it would not interrupt the project.
It worked fine for a few classes, but for others (notably the following one) it was ineffective. We've searched and searched but we cannot find anyone with a similar complaint (except a few people who have commented about ODBC version problems). Our ODBC version is 3.520.7713.0
Here's an example method from the Solution class (The entire class is over 1000 lines):
// Method to test Harmonic resonance for nodes within 10m
private boolean resonanceGlobal (boolean tstResonanceG, double txFreq, double rxFreq, int distance) {
System.out.println("Beginning global harmonic resonance check");
try {
// Getting Nodes
rsNode2 = eBroker.getNodes(projectNo);
// node loop
while (rsNode2.next()) {
System.out.println("602 Test Marker GHarm 1");
// get next node, store in nodeTemp
nodeTemp = rsNode2.getInt(1);
// System out to show which nodes will pass if statement
System.out.println(node + " compare to " + nodeTemp);
// avoid testing the same node against itself
if (nodeTemp != node) {
// distance check (only neccesary within 10m)
System.out.println("Test Marker Before Distance check");
distance = getDistance(node, nodeTemp, distance);
System.out.println("Test Marker After Distance check");
// distance check if statement
if (distance <= 10) {
System.out.println("618 Test Marker GHarm 2");
// get the radios of the node, foreign node
rsRadiosTemp = eBroker.getRadios(node);
rsDummy = eBroker.getDummy(projectNo);
rsRadios2 = eBroker.getRadios(nodeTemp);
// This dummy ResultSet normally fails so that
// the other ResultSets perform normally
try {
rsDummy.next();
} // end try
catch (java.sql.SQLException dummyException) {
System.out.println("dummyException " + dummyException);
} // end catch
// radio loop
while (rsRadiosTemp.next()) { // error occurs here
System.out.println("627 Test Marker GHarm 3");
// loop for foreign node radios
while (rsRadios2.next()) {
System.out.println("631 Test Marker GHarm 4");
// get next radio
radioTemp = rsRadios2.getInt(1);
// get the TX and RX of the radio
genericTX = getTX(radioTemp);
radioTempCon = getConnection(radioTemp);
genericRX = getTX(radioTempCon);
// calculate bounds for harmonics test
txLo = ((txFreq * 2) - genericTX) - 4; // 4Mhz below TX harmonics check
txHi = ((txFreq * 2) - genericTX) + 4; // 4Mhz above TX harmonics check
rxHi = ((rxFreq * 2) - genericRX) + 4; // 4Mhz above RX harmonics check
rxLo = ((rxFreq * 2) - genericRX) - 4; // 4Mhz below RX harmonics check
// checks TX and RX of foreign radio against TX, RX of current radio for separation
if ((txLo > genericTX && txHi < genericTX) || (rxLo > genericRX && rxHi < genericRX)) {
tstResonanceG = false;
break;
} //end if
else {
tstResonanceG = true;
} // end else
} //end foreign radio loop
// breaking out of loops for return
if (tstResonanceG == false)
break;
} // end radio loop
rsRadios2.close();
rsRadiosTemp.close();
} // end sameradio check
} // end distance check
}// end node loop
rsNode2.close();
} // end try
// Catch statement to stop from crashing in the
// event of an error during SQL statements.
catch (java.sql.SQLException resonanceGlobalException) {
// Prints out the error message produced
System.out.println(resonanceGlobalException);
} // end catch
// returns result
return tstResonanceG;
} //end checkHarmonicResonanceGlobal()
My apologies if it is a little hard to read, but the indenting is accurate. The Entry Broker methods which this method uses are here:
public ResultSet getNodes (int projectNo) {
// creating SQL statement
sqlStatement = "SELECT nodeNo from tblNode WHERE projectNo = " + projectNo;
System.out.println(sqlStatement);
// executing SQL statement
rsNodes = db.runQuery(sqlStatement);
// returns ResultSet
return rsNodes;
} // end getNodes
// Method to get the distance between any two nodes
public int getDistance (int projectNo, int node, int tempNode) {
ResultSet rsX1; // Used for obtaining the X-coord of node 1
ResultSet rsX2; // Used for obtaining the X-coord of node 2
ResultSet rsY1; // Used for obtaining the Y-coord of node 1
ResultSet rsY2; // Used for obtaining the Y-coord of node 2
double distance = 0; // Used in Global checks
int dist = 0; // Used in Global checks
int x1 = 0; // Used in calculating distance
int x2 = 0; // Used in calculating distance
int y1 = 0; // Used in calculating distance
int y2 = 0; // Used in calculating distance
int xDist = 0; // Used in calculating distance
int yDist = 0; // Used in calculating distance
int distint = 0; // Used to store converted values
try {
// get the X and Y co-ordinates of both nodes
sqlStatement = "SELECT xCoord FROM tblNode WHERE nodeNo = " + node + " AND projectNo = " + projectNo;
rsX1 = db.runQuery(sqlStatement);
rsX1.next();
x1 = rsX1.getInt(1);
sqlStatement = "SELECT yCoord FROM tblNode WHERE nodeNo = " + node + " AND projectNo = " + projectNo;
rsY1 = db.runQuery(sqlStatement);
rsY1.next();
y1 = rsY1.getInt(1);
sqlStatement = "SELECT xCoord FROM tblNode WHERE nodeNo = " + tempNode + " AND projectNo = " + projectNo;
rsX2 = db.runQuery(sqlStatement);
rsX2.next();
x2 = rsX2.getInt(1);
sqlStatement = "SELECT yCoord FROM tblNode WHERE nodeNo = " + tempNode + " AND projectNo = " + projectNo;
rsY2 = db.runQuery(sqlStatement);
rsY2.next();
y2 = rsY2.getInt(1);
} // end try
catch (java.sql.SQLException getDistanceException) {
System.out.println(getDistanceException);
// calculating distance
yDist = y2 - y1;
xDist = x2 - x1;
// perform pythagoras theorem for distance
dist = (xDist * xDist) + (yDist * yDist);
distance = java.lang.Math.sqrt(dist);
Double roundFreqTemp = new Double(freqTemp);
distint = roundFreqTemp.intValue() ;
return distint;
} // end get distance method
// Method to get all the radios in a node
public ResultSet getRadios(int node) {
ResultSet rsRadios; // Used for obtaining radios in a node
// creating sql Statement
sqlStatement = "SELECT * FROM tblRadio WHERE nodeNo =" + node;
System.out.println(sqlStatement);
// executing sql Statement
rsRadios = db.runQuery(sqlStatement);
System.out.println("EB Test Marker 1: Line 261");
// returning radio no
return rsRadios;
}//end getRadio
public double getTX(int radioTemp){
double txTemp = 0; // Used for storing TX of a radio
int freqNoTemp = 0; // Used for storing the frequency ID
rsDummy = getDummy(projectNo);
// creating SQL statement
sqlStatement ="Select frequencyNo from tblRadio where radioNo = " + radioTemp;
System.out.println(sqlStatement);
// executing SQL statement
rsTX = db.runQuery(sqlStatement);
try {
System.out.println("Test Marker EB1: 317");
try {
rsDummy.next();
} // end try
catch (java.sql.SQLException dummyException) {
System.out.println("dummyException" + dummyException);
} // end catch
System.out.println("Test MarkerEB2: 330");
// moving to first position in rs
rsTX.next();
System.out.println("Test MarkerEB3: 334");
// obtaining data from rs
freqNoTemp = rsTX.getInt(1);
System.out.println("Test MarkerEB4: 337");
rsTX.close();
} // end try
catch (java.sql.SQLException rsTXException) {
System.out.println("rsTXExeption: " + rsTXException);
} // emd catch
System.out.println("Frequency No is: " + freqNoTemp);
rsDummy = getDummy(projectNo);
sqlStatement = "Select frequency from tblFreq where frequencyNo = " + freqNoTemp;
System.out.println(sqlStatement);
rsRX = db.runQuery(sqlStatement);
try {
try {
System.out.println("Test MarkerEB6: 361");
rsDummy.next();
} // end try
catch (java.sql.SQLException dummyException) {
System.out.println("dummyException" + dummyException);
} // end catch
System.out.println("Test MarkerEB5: 373");
rsRX.next();
System.out.println("Test MarkerEB7: 376");
txTemp = rsRX.getDouble(1);
System.out.println("Test MarkerEB8: 379");
rsRX.close();
} // end try
catch (java.sql.SQLException rxException) {
System.out.println("rxException " + rxException);
} // end catch
System.out.println("393 Before return");
return txTemp;
} //end getTX
public int getConnection(int radio) {
int nodeCon = 0; // Used to return the connected node no
ResultSet rsConnection; // Used for obtaining the foreign radio
// creating SQL statement
sqlStatement = "SELECT radioNo FROM tblRadio where recRadio = " + radio;
System.out.println(sqlStatement);
// executing SQL statement
rsConnection = db.runQuery(sqlStatement);
try {
// moving to first position in rs
rsConnection.next();
// obtaining data from rs
nodeCon = rsConnection.getInt(1);
} // end try
catch (java.sql.SQLException getConnectionException) {
System.out.println("getConnectionException : " + getConnectionException);
} // end catch
// returns node no.
return nodeCon;
And finally, the dummy rs:
// Dummy method to fix resultSet closed error
public ResultSet getDummy (int projectNo) {
sqlStatement = "Select projectName from tblProject where projectNo = " + projectNo;
System.out.println(sqlStatement);
rsDummy = db.runQuery(sqlStatement);
return rsDummy;
Here is some sample output that we have:
----jGRASP exec: java MainGui
slider value constructor: 50
116: if(singleton==null) {
120: singleton=new Resolvotron
Connection to D/Base establised
Select projectName from tblProject where projectNo = 3
Init OK. Beginning solve process
main OK: beginning frequency assign process
SELECT nodeNo from tblNode WHERE projectNo = 3
267: Node number = 2
SELECT * FROM tblRadio WHERE nodeNo =2
EB Test Marker 1: Line 261
Test Marker 1: Line 289
298: Radio number = 4
Test Marker 5: Line 308
Test Marker 3: Line 313
SELECT frequency from tblFreq WHERE projectNo = 3
125.5
Beginning test process
Test Marker 4: Line 386
Beginning check 257072
Test Marker 6: Line 774
70 Mhz Margin = false
Beginning local 10Mhz separation check
SELECT * FROM tblRadio WHERE nodeNo =2
EB Test Marker 1: Line 261
Getting TX of radio: 4
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 4
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB5: 373
Test MarkerEB7: 376
Test MarkerEB8: 379
393 Before return
432: getting connection
SELECT radioNo FROM tblRadio where recRadio = 4
438: getting TX of radio: 6
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 6
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB5: 373
Test MarkerEB7: 376
Test MarkerEB8: 379
393 Before return
java.sql.SQLException: ResultSet is closed
10 Mhz Local = true
Beginning 10 Mhz separation check
SELECT nodeNo from tblNode WHERE projectNo = 3
Node number is 2
10 Mhz Global = false
Beginning local harmonic resonance check
SELECT * FROM tblRadio WHERE nodeNo =2
EB Test Marker 1: Line 261
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 4
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB5: 373
Test MarkerEB7: 376
Test MarkerEB8: 379
393 Before return
SELECT radioNo FROM tblRadio where recRadio = 4
Select projectName from tblProject where projectNo = 3
Select frequencyNo from tblRadio where radioNo = 6
Test Marker EB1: 317
dummyExceptionjava.sql.SQLException: ResultSet is closed
Test MarkerEB2: 330
Test MarkerEB3: 334
Test MarkerEB4: 337
Frequency No is: 2
Select projectName from tblProject where projectNo = 3
Select frequency from tblFreq where frequencyNo = 2
Test MarkerEB6: 361
I'll leave it at that, since the program goes into an endless loop. The dummy Exceptions are our dummy resultsets crashing so the rest can survive. The other stuff is from different methods. You should be able to locate the logic of the program by following the System.outs
Test Markers with EB refer to the Entry Broker.
Any help would be appreciated since we cannot find any other way of running this class successfully.
SteveOk problem solved...
Basically I was calling one ResultSet after another. Thanks to the Database Broker's structure, this was killing the first ResultSet. I fixed up the loops so that ResultSets were only ever called just before they were needed, and it fixed the problem. The only other errors were simple logic faults which I drummed out in short order. Thanks for the help everyone! -
I have code that creates dynamic SQL statements in a loop to search for a value in a table. The Where clause is changed in each iteration of the loop until the value is found or the loop finishes. The code looks something like this:
(Sorry for the crappy formatting of the code. I tried indenting lines, but when I previewed it, it aligned everything. Damn )
/* NOTE: variables were changed to fit in this page better */
for( int i = 9; i >=0;i--) {
SelectSQL = new StringBuffer("SELECT col FROM tab WHERE ");
for( int j = 0; j <= i;j++) {
SelectSQL.append( "col" + j + "ID = " + Val[j]);
if( j != i ) { SelectSQL.append(","); }
stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_READ_ONLY );
rs = stmt.executeQuery(SelectSQL.toString());
if( rs.next() ) {
ValID = rs.getLong(1);
/* TODO: Should I be closing these in loops? */
rs.close();
stmt.close();
if( ValID > 0 ) { break; }
My question is: Do I need to close the resultset(rs) and statement(stmt) at the bottom of the loop? That does not seem very efficient to me, but I am not sure. Any advice would be greatly appriciated. Thanks for your time.declare the statement out of the loop and close it on the
end (also out of the loop) so you reuse the statement each time,
if the ResultSet is empty it closes, also if you loop through it it closes itself, when it is empty, but i recommend to close it each time you use it anyway (in the loop)
don't forget, only select statements return a resultset .. others (delete, update) don't -
I am a Java noob guys, but we have java code the calls an Oracle Function. This code is unchanged from what successfully runs against an Oracle 9.2 database returning, in this case, one row from the database. A ref cursor is used. When the same Java code calls the same ref cursor function from a 10.2.0.1 database, a null resultset occurs. The function correctly returns a single row when executed by the same database user via sql-plus. So it must be a java thing. Does the jdbc driver need to be upgraded to correctly run against a 10.2 database? And is this null resultset type of anomaly a potential result of having a wrong version of ojdbc14.jar? Nothing else has changed except pointing the code to the same package and tables in a 10.2 database.
Thanks in advance for your comments.
Phil McDermottI realize now that this is the wrong forum to post in, but I was linked here from a google search on the issue.
I downloaded the 10.2.0.1 ojdbc14.jar from oracle, but the problem persists.
yeesh! now what? -
Re: [iPlanet-JATO] Sorting a resultset
Steve,
Todd will probably address this more, but to set the stage for the discussion,
I will chime in. As per your scenario "say a user wants to resort the results
by some other column" , I think there needs to be some clarification on the
life cycle of the model. You scenario implies that the user sees the data and
then submits a request to sort the data. This implies that the access to the
same data is spread across two HTTP requests.
Unless explicitly or implicitly stored in session, the Model is a per request
object. Therefore, under ordinary circumstances a new instance of Model is
constructed per request and populated as needed. This is done for scalability
reasons. Most applications would not scale properly if all model instances were
kept around in session per user. There is also the issue of data integrity, a
model stored in session may not reflect the current state of the RDBMS from
which the data was previously retrieved, perhaps minutes before. So, the
default action is to instantiate a new model and repopulate that model The
normal solution would be to apply the sort criteria to the data retrieval at
that point.
What I described above is the norm and the default.
If you have compelling reasons to prefer a single retrieval style, you have to
be prepared to store the Model data in session. There are several methods
within the ModelManager class which assist in this regard. You can see them
described in the java doc.
Also bear in mind that the SQLModelBase typically copies the data from the JDBC
result set into JATO specific local storage. This is done because the JDBC
result set is not as flexible as developer needs and requires the JDBC
connection to remain open while it is used.
I suspect that Todd will describe how you can manipulate the underlying JATO
specific local storage to change the order. I just wanted to make sure you
understood the life cycle issues involved and had justification for deviating
from the default.
Also, I'm still waiting for followup on the defaultCommandChild issue - we'd
like to fix it for JATO 1.2.1 if it is a problem and so far your case is the
only one we have heard of.
----- Original Message -----
From: stephen_winer
Sent: Wednesday, December 12, 2001 9:42 AM
Subject: [iPlanet-JATO] Sorting a resultset
If I want to sort a result set (Model) after the search has taken
place (say a user wants to resort the results by some other column),
can this be done without issuing another query? The reason I ask is
that the next() method in the ResultSetModelBase calls synchronizeRow
(), which resets the row, which sounds like a sort done outside of
the SQL would be reverted.
Steve
For more information about JATO, please visit:
http://developer.iplanet.com/tech/appserver/framework/index.jsp
[Non-text portions of this message have been removed]The hidden field was present in the page, but it looked like this:
<input type="hidden" name="jato.defaultCommand" value=""../search"">
Seems like there is a small bug in the code generating this tag.
FYI - I am using JATO1.2
What file displays this text? Maybe I can go in and fix it and rejar
it.
Steve
--- Mike Frisino wrote:
Steve,
Can you check the HTML source that shows up in the browser? Do you see an entry that looks like this at the bottom of the form in
question?
>
<input type="hidden" name="jato.defaultCommand" value="/search">
To answer your question - it should work as you described. Some of the JatoSample make use of the defaultCommandChild. Can you try
running the sample BasicSample->Field Types and let us know what you
see.
>
Failing this you can send me your jsp file , maybe there is some subtle issue there. michael.frisino@s...
>
>
----- Original Message -----
From: stephen_winer
Sent: Friday, December 07, 2001 8:05 AM
Subject: [iPlanet-JATO] Using the defaultCommandChild in a form
I am trying to set the defaultCommandChild in my jato:form tag to be
the searcg button. The search button definition is:
<jato:button name="search"/>.
The form tag definition is:
<jato:form name="PendingIA" defaultCommandChild="/search">
Clicking on the search button works fine, but hitting return in one
of the textFields (which submits the form) passes a value of "" to
the createChild method in my viewBean, which throws an error. Why
does this not just work as normal and trigger the handleSearchRequest
() method?
Steve
For more information about JATO, please visit:
http://developer.iplanet.com/tech/appserver/framework/index.jsp
Service.
>
>
>
[Non-text portions of this message have been removed]
Maybe you are looking for
-
Udevd and creation of /dev/dvb/adapter0 fails for U3100 Asus
Hello all, I have 3 arch PC's all running 3.14.4-1-ARCH properly updated. For some reason all 3 fail to create a /dev/dvb/adapter0 or adapter1 device when I plug in a dvb usb stick. The DVB USB stick from lsusb: Bus 006 Device 004: ID 0b05:1779 ASUS
-
Hi! We have a branch connected to head office through IP-SEC tunnel without DC. Some of the users are laptop users and not connected to domain in head office. Is it possible to let them connect to head office network computers by NetBIOS names withou
-
Help please. I can't print email from icloud
I've tried to print the body of a few different emails from a few different people from icloud on two different computers and five different printers at two different offices. In all instances, I can view the email perfectly but when I print, either
-
How can I stop my iphone 4s from asking for my icloud, yahoo and other passwords all the time?
-
Cell Definition and Reverse sign Issue after upgrade
Hi , we are having a issue here after upgrade to BI 7 from 3.1c . There is a Collision between Cell Definition and Reverse sign in the query designer. Issue is . We have Key Figure "Net Days AR" which has Reverse Sign Checked under properties. In 3.1