JDBC :: CLOBs - Retrieve Set Of Records Via Ref Cursor
May 21, 2015
I am working on a Java program that calls a stored procedure in an Oracle 11.2g database and retrieves a set of records via a ref cursor. The program follows the standard Connection/CallableStatement/ResultSet pattern. A ResultSet object is used to access and iterate through the returned cursor, processing each record in turn.
One of the database fields returned in the cursor is a CLOB, which I'm retrieving using the NClob class's getNClob() method. Two other methods - length() and getSubString() are then used to get the length of the CLOB and copy of it off to a String object respectively.
The problem is that these latter two method calls are relatively slow, taking around 80ms to complete for modestly sized CLOBs of, say, around 10KB in size.
Is this the most efficient way to access a CLOB and retrieve its contents? If so, is there anything I can do, to make it run faster?
We are running a set of unit tests using the latest ojdbc 7 driver and the highest open cursor keeps going up, until it hits our 300 limit, then throws the cursor limit exception. If we run these tests using ojdbc 12.0.1.1, the highest open cursor stays at 17 and doesn't cause this exception.
The query used to monitor these cursors is below:
SELECT max(a.value) as highest_open_cur, p.value as max_open_cur FROM v$sesstat a, v$statname b, v$parameter p WHERE a.statistic# = b.statistic# and b.name = 'opened cursors current' and p.name= 'open_cursors' group by p.value
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production Java 8 version 31
@Transactional public long getSequenceSedeB(Long id) { BigDecimal seqValue = nu String sql = "SELECT MAX(ID) FROM SEDE_B_ALLEGATI_A WHERE ID_SEDE=:id"; SQLQuery query = getSession().createSQLQuery(sql);
[Code] ....
But it do not works; this is the log.
type.NullableType (NullableType.java:182) - could not read column value from result set: ID; Invalid column name
Finding a strategy that allow process 12 millions of records in less than 1 hour. Each record can be modified by business rules. In this process are performed insert, update and select in other 3 tables.
The end result of this process is update monetary fields (for the calculations is used BigDecimal) of records in another table.
This process is part of the migration of Cobol to Java/Oracle. In cobol this process takes approximately one hour. Is it possible?
calling a parameterized stored procedure in java jdbc from sql server.The stored procedure goes like this in sql
create proc patientreg @id int as begin select [patient_id],[Psurname], [pFirstname], [pMiddlename], [reg_date], [DOB], [Sex], [Phone_num], [Addr],[Email],[dbo].[fncomputeage](DOB) from [dbo].[Patient_registration] where [patient_id] = @id end please note dbo.fncompute(DOB) is a function
The assignment is to create a program that accepts entries from a user for 3 variables then saves the data to a file. There are other programs that use the file created. One program displays the non-default records. The next program allows the user to enter the id for the employee and displays the first and last name for that id number. The last program allows the user to enter a first name. It then displays all id numbers and last names for records with that first name.
Given the above situation, I am stuck on creating the first program. I can make the text file and write the information to it. However, when the file is created, a space is placed in between each entry for some reason. I cannot figure out how to get rid of this space so that I can display the appropriate records for the remaining programs. Below is the code and a view of my problem.
import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.*; import java.io.*; import static java.nio.file.StandardOpenOption.*; import java.util.*; public class WriteEmployeeList {
[Code] .....
The values for nameFormat and lnameFormat are 10 spaces. This is how the book told me to make sure everything is uniform and searchable. The file contents look like this when viewed in notepad.
I'm programming in school using Netbeans and we've just started with graphical programming (i.e JPanel, JClass, JFrame). This is my first assignment and the purpose of this program is that when you press the mouse you will fill 4 circles with diffrent colors. I've managed to draw 4 circles with diffrent colors but I want my cursor to change color simultaneously. Here's my code so far ....
//Java klass "Klick" public class Klick { //Medlemsvariabler. private int x = 0; private int y = 0; private int r = 1; public int antal = Rityta.antalKlick;
I am developing an application where blind person can interact with computer i have completed the part where computer responds as per command given by user.The part where i am stuck is i want to give voice feedback as user moves the curser for example if mouse is on d drive then user should get feedback that its d drive....i want to do it for whole windows ...
I decided to change the mouse cursor based on the theme of the game. This is the code that I wrote for the declaration of the cursor:
ImageIcon imageIcon = new ImageIcon ("cursor / cursor.gif"); Image img = imageIcon.getImage (); Toolkit t = Toolkit.getDefaultToolkit (); Cursor cursor = t.createCustomCursor (img, new Point (0,0), "cur"); this.setCursor (cursor);
Having to click on different JButton in the menu of the game, a few screens later, I have to manage something in particular, such as determining the point of clicks that allows the action to take place?
In particular I would like to change the point of hotspots. The size of 136x163 is cursor.gif
Image - TinyPic - Servizio di hosting d'immagini, condivisione immagini & hosting di video gratuito
As you can see in the image I want to create the point of hotspots in the red dot of the image. How should I do to pass the correct coordinates in Point?
My problem is simple. Just set busy cursor on a scene. The scenarios is like this: I have simple application with a button on it. When I click the button, I will:
1. Set mouse cursor to BUSY 2. Do some work 3. Set mouse cursor back to DEFAULT.
I search the web and found some sample codes to set cursor. But they don't satisfy my need. So I wrote a simple application:
public class MainFormApp extends Application { @Override public void start(Stage stage) throws Exception { stage.initStyle(StageStyle.DECORATED); Pane root = new Pane(); root.setPrefSize(500, 300); Button btn = new Button("Click me");
[Code] ....
When I run application and click the button, cursor does not change to BUSY. I also tried to use Platform.runLater() but no luck.
I've been creating a digital clock using Java, and have made the mouse cursor invisible after a set period of time (40-seconds) and had the thought to make it visible again if mouse was moved.
Here's the code that makes it invisible:
ActionListener mouseTimeout = new ActionListener() { public void actionPerformed(ActionEvent e) { setCursor(blankCursor); } }; /* Make mouse cursor disappear after 40 seconds */ Timer mTimeout = new Timer(40000, mouseTimeout); mTimeout.start();
And here is what I have so far for making it visible again:
MouseMotionListener mouse = new MouseMotionListener() { @Override public void mouseDragged(MouseEvent e) { } @Override public void mouseMoved(MouseEvent e) { } };
I have tried using "setCursor(DEFAULT_CURSOR)" but NetBeans says that it "cannot find symbol" .....
I have now slowly moving on the learning Database Connectivity.Found a simple example on one site and tried to execute it, Creating a database, connecting to it and displaying the output.
I am getting trouble with recordset in displaying all the records in the badabase. It displays the very first record correctly but if I try to enclose it in while(rs.next()) loop, it generates an error message saying "Invalid operation at current cursor position".
This is my code. It is running great until I enter in the final color and hit enter. I get an Array Index out of bounds error, which I show at the bottom. I have fiddled with it, by moving the all answers correct into an if..else statement, hoping it would fix it. Needless to say, it didn't work.
Also, I am trying to figure out how to make the cursor appear in each guess box. It does in the first one, but after I hit enter, I have to click in the box each time to get one.
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class RobertMaloneChapter17 extends JFrame { //final variables to set the width and height of my frame
[Code] ....
My Errors:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 5 at RobertMaloneChapter17$Listener.actionPerformed(RobertMaloneChapter17.java:67) at javax.swing.JTextField.fireActionPerformed(JTextField.java:508) at javax.swing.JTextField.postActionEvent(JTextField.java:721)
When editing a cell, the existing code would use the right/left cursor keys to move from cell to cell as opposed to from character to character when editing a cell. I planned to override the functionality by tossing in the above code as a test to see if it stops the functionality before I override it.
After placing in the above code, the above functionality no longer occurs, but now the cursor moves within the cell as I wanted which is to move from character to character instead of cell to cell. Its great it works, but it really shouldn't. Essentially the default behavior has been restored when it should have really disabled the left/right keys.
I assume there is some underlying class someplace that is doing something to affect the behavior. Since a sample can't be provided I am wondering in what scenarios would the e.consume() restore default functionality?
I'm starting to use AbstractTableModel to customize a JTable model. The problem appears when you add a record from a ResultSet to JTable object.
I've managed to insert records, but empty, I need that for every column I can see the data is there.
Leave some code I have been writing ... the method to insert records in JTable is called "insertEmptyRow" (for now).
I need some opinion that can make changes to the code of this method so you can get to see all the data in a record.
MyFirstModel:
public class TablaModeloPrincipal extends private String algo; private int numRegTabla; //Agrego las columnas que quier tener en el model private String[] columnNames = {"DNI", "Nombre", "Edad", "Dirección", "Empresa", "Contacto"}; Vector<String[]> clientes = new Vector<String[]>() ; public ResultSet buscarResultset() throws SQLException{ ResultSet rs=null;
i am having a below piece of code in my worker thread. In my output i am getting xml records from the database. I'm sending this output to a input stream & finally to a sax parser.My query is, before sending to the parser i need to store the input stream in buffer. The buffer should store 1000 records. For every 1000 records the parser should be called from buffer.
while (orset.next()) { output = orset.getString("xmlrecord"); writeCount++; InputStream in = new ByteArrayInputStream(output.getBytes("UTF-8")); InputStream inputStream = new ByteArrayInputStream(output.getBytes("UTF-8")); Reader reader = new InputStreamReader(inputStream,"UTF-8");
I am working on a project and for one step, I need to load an array (which in this case, students[]), with the records in another file.
So, should I used the try, catch method?? I am just not sure about the array. I know how to read from a file, but, I didn't get the idea of loading an array.
I am having some difficulty adding a new item to the HashTable when a collision occurs. We can only use the basic utilities to code this, so we are coding a HashTable by hand. We have an array of length of 10, which each index holds or will hold a Node for a Linked List.
The code hashes fine, adds the item, but the problem exists when adding items that already been hashed. The project is much bigger, but this is the engine behind the rest, and I figured I would tackle this first.
The items we are adding are objects which are states containing different information, we hash based on the ASCII sum % tableSize.
Here is the code I am testing with to add items:
HashTable ht = new HashTable(10); State az = new State("Arizona","AZ","W",2,"Y",2); State fl = new State("Florida", "FL", "F", 2, "X", 2); State hi = new State("Hawaii", "HI", "H", 3, "Z", 1); State al = new State("Alabama", "AL", "A", 5, "W", 0); ht.insert(hi);
So I am calling this method several times and trying to write multiple records to a file. Problem is that every time I call the method it overwrites the file from before and doesn't add it.
public void fileWriterMethod() throws IOException{ RandomAccessFile raf = new RandomAccessFile(filename, "rw"); raf.writeInt(id); raf.writeInt(existingMileage); raf.writeInt(gasCost); raf.writeInt(ndays); raf.writeInt(rate);
I am reading records from a txt file and storing it into an array
import java.util.*; import java.io.*; public class PatientExercise { //patients exercise time public static void main (String[]args) throws IOException{ Scanner in = new Scanner(new FileReader("values.txt")); double [] patientTimeRecords = new double [300]; int noExerciseCount=0, numPatients =0; double highest=0, lowest=0, avg=0, totalTime=0;
[Code] ....
However an error msg keeps popping up:
Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Scanner.java:907) at java.util.Scanner.next(Scanner.java:1530) at java.util.Scanner.nextDouble(Scanner.java:2456) at pastpapers.PatientExercise.main(PatientExercise.ja va:44)
line 44 is:patientTimeRecords[i]= in.nextDouble();