New to JDBC

Hello,
I�m new to JDBC and I�m trying to execute a very basic query against Oracle database.
The very same query gives expected output when is executed directly on the database in SQL*Plus:
select sum(account_balance) from accounts
SUM(ACCOUNT_BALANCE)
125000
when my JDBC program says that the responce data is null (System.out.println(rset.getObject(i)); prints null):
columnClassName = java.math.BigDecimal
null
Could you plz give me a hint what am I doing wrong?
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
        String url = "jdbc:oracle:thin:@walery:1521:wal";
        String userName = "scott";
        String password = "tiger";
        Connection conn =
                DriverManager.getConnection(url, userName, password);
        Statement stmt = conn.createStatement();
        ResultSet rset = stmt.executeQuery("select sum(account_balance) from accounts");
        ResultSetMetaData metaData = rset.getMetaData();
        int columnCount = metaData.getColumnCount();
        while (rset.next())
            for (int i = 1; i <= columnCount; i++) {
                String columnClassName = metaData.getColumnClassName(i);
                System.out.println("columnClassName = " + columnClassName);
                System.out.println(rset.getObject(i));
            }

I'm sorry guys, I was using the wrong scheme. Now
it's ok.Cool. I'm glad it was something simple. :-)

Similar Messages

  • New WLS JDBC Technology page on dev2dev

    There is a new WLS JDBC technology page on dev2dev at
    http://dev2dev.bea.com/technologies/jdbc/index.jsp.
    We also expect to be posting new papers to it shortly.

    Hi Eric,
              The FAQs are already linked under "Newsgroups and FAQ".
              Tom
              Eric Ma wrote:
              > Tom:
              >
              > Thanks for pulling all the resources together in one place. Can you also add
              > links to JMS FAQ's?
              >
              > Eric
              >
              > Tom Barnes <[email protected]> wrote:
              >
              >>For the first time, it's all in one place!
              >>
              >>There is a new comprehensive JMS technology page on dev2dev for all
              >>public things JMS. It covers WebLogic versions 6.1 and later:
              >>
              >> http://dev2dev.bea.com/technologies/jms/index.jsp
              >>
              >>The technology page is also accessible from the left-hand nav underneath
              >>the Technologies header.
              >>
              >>In addition, there is a new JMS features section in edocs, which, also
              >>for the first time, centrally lists JMS features and their related
              >>links:
              >>
              >> http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              >>
              >>Any feedback is welcome, and can go to dev2dev, or myself
              >>([email protected]).
              >>
              >>Tom, BEA
              >>
              >
              >
              

  • Pretty new to jdbc...

    Hi...I did more ASP than anything else and so I just would like to know if there is such a thing in java as connection strings(just like an oledb or ADO connection string in ASP to connect to a database) instead of using an ODBC type connection. That's because I don't have access to a DSN on the server to which I'm uploading.
    Thanks!
    pking...2002

    JDBC uses connection strings. The connection string defines the JDBC driver and optionally other information that the driver might use. The optional information is specific to the specific driver.
    ODBC only uses DSNs on the client box. Unless you have a file DSN and you have mapped drive to that file DSN, then using the DSN on the server is not an option in any case.
    If you want to use the jdbc-odbc bridge driver then the JVM on the client must be a Sun JVM. You can either create a DSN on each client or use a DSN-less connection string. The DSN-less connection string format will depend on the database that you are connecting to. For examples you can search this forum using "DSN-less" and the name of your database.
    If it is relevant then keep in mind that ODBC is not a suitable internet tool. It is suitable for a intranet.

  • New to JAVA - ODBC/JDBC - clarification

    Hi,
    I am using Window XP. I am in my initial stages of learning JAVA.
    I am using one of the books to learn the language. I wrote to the following code to interact with the database - "websites.mdb" which is in a different location than java.
    import java.sql.*;
    public class MakeTheConnection
    public static void main (String[] args)
    try
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String sourceURL = new String ("jdbc:odbc:websites");
    Connection DatabaseConnection = DriverManager.getConnection(sourceURL);
    catch (ClassNotFoundException cnfe)
    System.out.println(cnfe);
    catch (SQLException sqle)
    System.out.println(sqle);
    When I run the above code I am geting the following error:
    java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    I also tried creating a DSN which I tried using it here in the sourceURL but still in vain, i got the same error. I would really appreciate if somebody could help me in providing pointer or information regarding to solve this problem and be able to interact with databases. I use MS access.
    Thanks in advance.
    PK

    Hi,
    I created the file DSN through Control panel - > ODBC called "Test" and I used that in the following manner:
    try
              Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
              String sourceURL = new String ("jdbc:odbc:Test");
              Connection DatabaseConnection = DriverManager.getConnection(sourceURL);
    I hope that is right. I am trying to execute using these code. I am getting the following error, I am not sure where the problem is.
    C:\jdk1.5.0\bin>java MakeTheConnection
    java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    Please do let me know.
    Regards,
    PK

  • New SQL Server 2005 JDBC Driver

    Dear All,
    I am grasping for straws here. I have a very strange issue with
    the new Microsoft JDBC driver (Microsoft SQL Server 2005 JDBC Driver).
    I have a couple of strange things happenning when I am using this driver,
    but the most critical one is that the application literally hangs
    executing a readObject statement:
    ExpressionBuilder trp= new ExpressionBuilder();
    Expression exp1 = trp.get("ID").equal(ID);
    getDatabaseSession().readObject(Trip.class, exp1);
    I can see that it actually executes the statement, then hangs.
    Any ideas would be greatly appreciated
    I am using 10g Release 3 (10.1.3.0.0) (Build 060118)

    Are you able to get a thread dump to see where the threads are?
    Doug

  • Using JDBC to write a DAT file with delimiters to a database

    Hi Everybody
    I am new to JDBC and i am trying out some small applications: I downloaded this small program and tried to compile it and and I got the following errors: ( I have MySql installed). I have to set the classpath for the driver. But I am not sure why I am gettting the NullPointerException though)
    I will be very gratefull to your help. Thanks a lot..
    Loading JDBC Driver -> oracle.jdbc.driver.OracleDriver
    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
         at java.net.URLClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at us.ilango.WriteFileToTable.<init>(WriteFileToTable.java:69)
         at us.ilango.WriteFileToTable.main(WriteFileToTable.java:367)
    java.lang.NullPointerException
         at us.ilango.WriteFileToTable.createTable(WriteFileToTable.java:97)
         at us.ilango.WriteFileToTable.main(WriteFileToTable.java:368)
    Exception in thread "main"
    the Program is as follows:
    package us.ilango;
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.StringTokenizer;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.util.Date;
    import java.text.SimpleDateFormat;
    import java.text.NumberFormat;
    import java.text.ParseException;
    * The following class provides an example of how to read a simple text file
    * of records and then insert them into a table in a database. A text file
    * named Employee.txt will contain employee records to be inserted into the
    * following table:
    *      SQL> desc emp
    *      Name              Null?    Type
    *      EMP_ID              NOT NULL NUMBER
    *      DEPT_ID                      NUMBER
    *      NAME                NOT NULL VARCHAR2(30)
    *      DATE_OF_BIRTH       NOT NULL DATE
    *      DATE_OF_HIRE        NOT NULL DATE
    *      MONTHLY_SALARY      NOT NULL NUMBER(15,2)
    *      POSITION            NOT NULL VARCHAR2(100)
    *      EXTENSION                    NUMBER
    *      OFFICE_LOCATION              VARCHAR2(100)
    * NOTE: This example will provide and call a method that creates the EMP
    *       table. The name of the method is called createTable() and is called
    *       from the main() method.
    public class WriteFileToTable {
        final static String driverClass    = "oracle.jdbc.driver.OracleDriver";
        final static String connectionURL  = "jdbc:oracle:thin:@localhost:1521:CUSTDB";
        final static String userID         = "scott";
        final static String userPassword   = "tiger";
        final static String inputFileName  = "Employee.txt";
        final static String TABLE_NAME     = "EMP";
        final static String DELIM          = ",";
        Connection   con                   = null;
         * Construct a WriteFileToTable object. This constructor will create an
         * Oracle database connection.
        public WriteFileToTable() {
            try {
                System.out.print("  Loading JDBC Driver  -> " + driverClass + "\n");
                Class.forName(driverClass).newInstance();
                System.out.print("  Connecting to        -> " + connectionURL + "\n");
                this.con = DriverManager.getConnection(connectionURL, userID, userPassword);
                System.out.print("  Connected as         -> " + userID + "\n");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
         * Method used to create the initial EMP table. Before attempting to create
         * the table, this method will first try to drop the table.
        public void createTable() {
            Statement stmt = null;
            try {
                stmt = con.createStatement();
                System.out.print("  Dropping Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("DROP TABLE " + TABLE_NAME);
                System.out.print("    - Dropped Table...\n");
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                System.out.print("    - Table " + TABLE_NAME + " did not exist.\n");
            try {
                stmt = con.createStatement();
                System.out.print("  Creating Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("CREATE TABLE emp (" +
                                 "    emp_id           NUMBER NOT NULL " +
                                 "  , dept_id          NUMBER " +
                                 "  , name             VARCHAR2(30)  NOT NULL " +
                                 "  , date_of_birth    DATE          NOT NULL " +
                                 "  , date_of_hire     DATE          NOT NULL " +
                                 "  , monthly_salary   NUMBER(15,2)  NOT NULL " +
                                 "  , position         VARCHAR2(100) NOT NULL " +
                                 "  , extension        NUMBER " +
                                 "  , office_location  VARCHAR2(100))");
                System.out.print("    - Created Table...\n");
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
         * Method used to read records from Employee.txt file then write the records
         * to an Oracle table within the database named "EMP".
        public void performLoadWrite() {
            Statement stmt          = null;
            int       insertResults = 0;
            StringTokenizer st = null;
            String  emp_id;
            String  dept_id;
            String  name;
            String  date_of_birth;
            String  date_of_hire;
            String  monthly_salary;
            String  position;
            String  extension;
            String  office_location;
            try {
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Create FileReader Object for file: " + inputFileName + "...\n");
                FileReader inputFileReader = new FileReader(inputFileName);
                System.out.print("  Create BufferedReader Object for FileReader Object...\n");
                BufferedReader inputStream   = new BufferedReader(inputFileReader);
                String inLine = null;
                while ((inLine = inputStream.readLine()) != null) {
                    st = new StringTokenizer(inLine, DELIM);
                    emp_id   = st.nextToken();
                    dept_id  = st.nextToken();
                    name     = st.nextToken();
                    date_of_birth = st.nextToken();
                    date_of_hire = st.nextToken();
                    monthly_salary = st.nextToken();
                    position = st.nextToken();
                    extension = st.nextToken();
                    office_location = st.nextToken();
                    System.out.print("  Inserting value for [" + name + "]\n");
                    insertResults = stmt.executeUpdate(
                            "INSERT INTO " + TABLE_NAME + " VALUES (" +
                                      emp_id +
                            "  ,  " + dept_id +
                            "  , '" + name + "'" +
                            "  , '" + date_of_birth + "'" +
                            "  , '" + date_of_hire + "'" +
                            "  ,  " + monthly_salary +
                            "  , '" + position + "'" +
                            "  ,  " + extension +
                            "  , '" + office_location + "')");
                    System.out.print("    " + insertResults + " row created.\n");
                System.out.print("  Commiting Transaction...\n");
                con.commit();
                System.out.print("  Closing inputString...\n");
                inputStream.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
         * Method used to query records from the database table EMP. This method
         * can be used to verify all records have been correctly loaded from the
         * example text file "Employee.txt".
        public void queryRecords() {
            Statement stmt           = null;
            ResultSet rset           = null;
            int       deleteResults  = 0;
            int       rowNumber      = 0;
            int     emp_id;
            int     dept_id;
            String  name;
            String  date_of_birth;
            Date    date_of_birth_p;
            String  date_of_hire;
            Date    date_of_hire_p;
            float   monthly_salary;
            String  position;
            int     extension;
            String  office_location;
            try {
                SimpleDateFormat formatter      = new SimpleDateFormat("yyyy-MM-dd");
                NumberFormat     defaultFormat  =     NumberFormat.getCurrencyInstance();
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Opening query for table: " + TABLE_NAME + "...\n");
                rset = stmt.executeQuery ("SELECT * FROM emp ORDER BY emp_id");
                while (rset.next ()) {
                    rowNumber = rset.getRow();
                    emp_id = rset.getInt(1);
                    if ( rset.wasNull() )   {emp_id = -1;}
                    dept_id = rset.getInt(2);
                    if ( rset.wasNull() )   {dept_id = -1;}
                    name = rset.getString(3);
                    if ( rset.wasNull() )   {name = "<null>";}
                    date_of_birth = rset.getString(4);
                    if ( rset.wasNull() ) {date_of_birth = "1900-01-01";}
                    try {
                        date_of_birth_p = formatter.parse(date_of_birth);
                    } catch (ParseException e) {
                        date_of_birth_p = new Date(0);
                    date_of_hire = rset.getString(5);
                    if ( rset.wasNull() ) {date_of_hire = "1900-01-01";}
                    try {
                        date_of_hire_p = formatter.parse(date_of_hire);
                    } catch (ParseException e) {
                        date_of_hire_p = new Date(0);
                    monthly_salary = rset.getFloat(6);
                    if ( rset.wasNull() ) {monthly_salary = 0;}
                    position = rset.getString(7);
                    if ( rset.wasNull() ) {position = "<null>";}
                    extension = rset.getInt(8);
                    if ( rset.wasNull() )   {extension = -1;}
                    office_location = rset.getString(9);
                    if ( rset.wasNull() ) {office_location = "<null>";}
                    System.out.print(
                        "\n" +
                        "  RESULTS -> [R" + rowNumber + "] " + "\n" +
                        "      Employee ID     : " + emp_id + "\n" +
                        "      Department ID   : " + dept_id + "\n" +
                        "      Employee Name   : " + name + "\n" +
                        "      D.O.B.          : " + date_of_birth_p + "\n" +
                        "      Date of Hire    : " + date_of_hire_p + "\n" +
                        "      Monthly Salary  : " + defaultFormat.format(monthly_salary) + "\n" +
                        "      Position        : " + position + "\n" +
                        "      Extension       : x" + extension + "\n" +
                        "      Office Location : " + office_location +
                        "\n");
                System.out.print("  Closing ResultSet...\n");
                rset.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
         * Close down Oracle connection.
        public void closeConnection() {
            try {
                System.out.print("  Closing Connection...\n");
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
         * Sole entry point to the class and application.
         * @param args Array of String arguments.
         * @exception java.lang.InterruptedException
         *            Thrown from the Thread class.
        public static void main(String[] args)
                throws java.lang.InterruptedException {
            WriteFileToTable runExample = new WriteFileToTable();
            runExample.createTable();
            runExample.performLoadWrite();
            runExample.queryRecords();
            runExample.closeConnection();
        }

    Hi
    Thanks a lot. I ran the program with the MySql driver as follows:
    The errors are as follows: I will ttry to place the Driver in the Classpath. As far as I know the driver has been specified correctly this time.
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
         at java.net.URLClassLoader$1.run(Unknown Source)
         at java.security.AccessController.doPrivileged(Native Method)
         at java.net.URLClassLoader.findClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClass(Unknown Source)
         at java.lang.ClassLoader.loadClassInternal(Unknown Source)
         at java.lang.Class.forName0(Native Method)
         at java.lang.Class.forName(Unknown Source)
         at us.ilango.WriteAntennas.<init>(WriteAntennas.java:41)
         at us.ilango.WriteAntennas.main(WriteAntennas.java:377)
    java.lang.NullPointerException
         at us.ilango.WriteAntennas.createTable(WriteAntennas.java:70)
         at us.ilango.WriteAntennas.main(WriteAntennas.java:378)
    Exception in thread "main" Loading JDBC Driver -> com.mysql.jdbc.Driver
    The program is as follows:
    package us.ilango;
    * @author ilango
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.Statement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.StringTokenizer;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.IOException;
    public class WriteAntennas {
        final static String driverClass    = "com.mysql.jdbc.Driver";
        final static String connectionURL  = "jdbc:mysql://localhost/test2";
        final static String userID         = "brian";
        final static String userPassword   = " ";
        final static String inputFileName  = "CO.DAT";
        final static String TABLE_NAME     = "CELL";
        final static String DELIM          = "|";
        Connection   con                   = null;
        public WriteAntennas() {
            try {
                System.out.print("  Loading JDBC Driver  -> " + driverClass + "\n");
                Class.forName(driverClass).newInstance();
                System.out.print("  Connecting to        -> " + connectionURL + "\n");
                this.con = DriverManager.getConnection(connectionURL, userID, userPassword);
                System.out.print("  Connected as         -> " + userID + "\n");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
         * Method used to create the initial EMP table. Before attempting to create
         * the table, this method will first try to drop the table.
        public void createTable() {
            Statement stmt=null;
            try {
                stmt = con.createStatement();
                System.out.print("  Dropping Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("DROP TABLE " + TABLE_NAME);
                System.out.print("    - Dropped Table...\n");
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                System.out.print("    - Table " + TABLE_NAME + " did not exist.\n");
            try {
                stmt = con.createStatement();
                System.out.print("  Creating Table: " + TABLE_NAME + "\n");
                stmt.executeUpdate("create table TOWER_PUBACC_CO (" +
         "record_type               char(2)              null" +
         ", content_indicator         char(3)              null" +
         ", file_number               char(8)              null" +
         ", registration_number       char(7)              null" +
         ", unique_system_identifier  long(9,0)         not null" +
         ", coordinate_type           char(1)              not null" +
         ",latitude_degrees          int                  null" +
         ",latitude_minutes          int                  null" +
         ",latitude_seconds          int(4,1)         null" +
         ",latitude_direction        char(1)              null" +
         ",latitude_total_seconds    int(8,1)         null" +
         ",longitude_degrees         int                  null" +
         ",longitude_minutes         int                  null" +
         ",longitude_seconds         int(4,1)         null" +
         ",longitude_direction       char(1)              null" +
         ",longitude_total_seconds   int(8,1)         null)" );
                System.out.print("   created Table...\n");
                System.out.print("  closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
        public void performLoadWrite() {
            Statement stmt          = null;
            int       insertResults = 0;
            StringTokenizer st = null;
            String record_type ;
            String  content_indicator;
            String file_number ;
            String registration_number;
             String unique_system_identifier ;
            String coordinate_type;
            String latitude_degrees;
            String  latitude_minutes;
            String latitude_seconds;
            String latitude_direction;
            String latitude_total_seconds;
            String longitude_degrees;
           String longitude_minutes;
           String longitude_seconds;
           String longitude_direction;
           String longitude_total_seconds;
            try {
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Create FileReader Object for file: " + inputFileName + "...\n");
                FileReader inputFileReader = new FileReader(inputFileName);
                System.out.print("  Create BufferedReader Object for FileReader Object...\n");
                BufferedReader inputStream   = new BufferedReader(inputFileReader);
                String inLine = null;
                while ((inLine = inputStream.readLine()) != null) {
                    st = new StringTokenizer(inLine, DELIM);
                    record_type   = st.nextToken();
                   content_indicator = st.nextToken();
                    file_number    = st.nextToken();
                    registration_number = st.nextToken();
                    unique_system_identifier = st.nextToken();
                   coordinate_type =st.nextToken();
                   latitude_degrees  = st.nextToken();
                   latitude_minutes = st.nextToken();
                    latitude_seconds=st.nextToken();
                   latitude_direction = st.nextToken();
                    latitude_total_seconds =st.nextToken();
                    longitude_degrees= st.nextToken();
                    longitude_minutes = st.nextToken();
                    longitude_seconds = st.nextToken();
                    longitude_direction=st.nextToken();
                    longitude_total_seconds =st.nextToken();
                    System.out.print("  Inserting value for [" + unique_system_identifier + "]\n");
                    insertResults = stmt.executeUpdate(
                            "INSERT INTO " + TABLE_NAME + " VALUES (" +
                                      record_type +
                            "  ,  " + content_indicator +
                            "  , '" + file_number + "'" +
                            "  , '" + registration_number + "'" +
                            "  , '" + unique_system_identifier + "'" +
                            "  ,  " + coordinate_type + "'" +
                            "  , '" + latitude_degrees + "'" +
                            "  ,  " + latitude_minutes + "'" +
                            "  , '" + latitude_seconds + "'" +
                            "  , '" + latitude_direction + "'" +
                            "  , '" + latitude_total_seconds + "'" +
                           "  , '" + longitude_minutes + "'" +
                           "  , '" + longitude_seconds + "'" +
                          "  , '" + longitude_direction + "'" +
                           "  , '" + longitude_total_seconds + "')");
                    System.out.print("    " + insertResults + " row created.\n");
                System.out.print("  Commiting Transaction...\n");
                con.commit();
                System.out.print("  Closing inputString...\n");
                inputStream.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
        public void queryRecords() {
            Statement stmt           = null;
            ResultSet rset           = null;
            int       deleteResults  = 0;
            int       rowNumber      = 0;
            String   record_type;
            String   content_indicator;
            String  file_number;
            String registration_number ;
            long  unique_system_identifier;
            String coordinate_type ;
            int   latitude_degrees ;
            int latitude_minutes ;
            int latitude_seconds;
            String latitude_direction;
            int  latitude_total_seconds;
            int     longitude_degrees;
             int longitude_minutes;
               int     longitude_seconds;
                 String longitude_direction;
           int  longitude_total_seconds;
            try {
                System.out.print("  Creating Statement...\n");
                stmt = con.createStatement ();
                System.out.print("  Opening query for table: " + TABLE_NAME + "...\n");
                rset = stmt.executeQuery ("SELECT * FROM cell ORDER BY unique_system_identifier");
                while (rset.next ()) {
                    rowNumber = rset.getRow();
                    unique_system_identifier = rset.getInt (1);
                    if ( rset.wasNull() )   {unique_system_identifier = -1;}
                    record_type = rset.getString (2);
                    if ( rset.wasNull() )   {record_type = "<null>";}
                    content_indicator = rset.getString(3);
                    if ( rset.wasNull() )   {content_indicator = "<null>";}
                    file_number = rset.getString(4);
                    if ( rset.wasNull() ) {file_number = "<null>";}
                    registration_number = rset.getString(5);
                    if ( rset.wasNull() ) {registration_number = "<null>";}
                    coordinate_type = rset.getString(6);
                    if ( rset.wasNull() )   {coordinate_type = "<null>";}
                    latitude_degrees = rset.getInt(7);
                    if ( rset.wasNull() ) {latitude_degrees = 1;}
    latitude_minutes = rset.getInt(8);
                    if ( rset.wasNull() ) {latitude_minutes = 1;}
    latitude_seconds = rset.getInt(9);
                    if ( rset.wasNull() ) {latitude_seconds = 1;}
    latitude_direction = rset.getString(10);
                    if ( rset.wasNull() ) {latitude_direction = "<null>";}
    latitude_total_seconds = rset.getInt(11);
                    if ( rset.wasNull() ) {latitude_total_seconds = 1;}
    longitude_degrees = rset.getInt(12);
                    if ( rset.wasNull() ) {longitude_degrees = 1;}
    longitude_minutes = rset.getInt(13);
                    if ( rset.wasNull() ) {longitude_minutes = 1;}
    longitude_seconds = rset.getInt(14);
                    if ( rset.wasNull() ) {longitude_seconds = 1;}
    longitude_direction = rset.getString(15);
                    if ( rset.wasNull() ) {longitude_direction = "<null>";}
    longitude_total_seconds = rset.getInt(16);
                    if ( rset.wasNull() ) {longitude_total_seconds = 1;}
                    System.out.print(
                        "\n" +
                        "  RESULTS -> [R" + rowNumber + "] " + "\n" +
                        "  Unique_System_Identifier         : " + unique_system_identifier  + "\n" +
                        "  Record_type     : " + record_type   + "\n" +
                        "  Content_Indicator      : " + content_indicator   + "\n" +
                        "  Registration_Number              : " + registration_number   + "\n" +
                        "  File_Number        : " +  file_number  + "\n" +
                        "  Coordinate_Type     : " + coordinate_type  + "\n" +
                        "  Latitude_Degrees          : " + latitude_degrees + "\n" +
                        "  Latitude_Minutes          : " + latitude_minutes + "\n" +
                        "  Latitude_Seconds           : " + latitude_seconds + "\n" +
                        " Latitude_Direction            : " + latitude_direction + "\n" +
                        "  Latitude_Total_Seconds           : " + latitude_total_seconds + "\n" +
                        "  Longitude_Degrees           : " + longitude_degrees + "\n" +
                        "  longitude_minutes           : " + longitude_minutes + "\n" +
                        "  Longitude_Seconds           : " + longitude_seconds + "\n" +
                       "     longitude_direction        : " + longitude_direction + "\n" +
                       "  Longitude_Total_Seconds           : " + longitude_total_seconds +
                       "\n");
                System.out.print("  Closing ResultSet...\n");
                rset.close();
                System.out.print("  Closing Statement...\n");
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
        public void closeConnection() {
            try {
                System.out.print("  Closing Connection...\n");
                con.close();
            } catch (SQLException e) {
                e.printStackTrace();
        public static void main(String[] args)
                throws java.lang.InterruptedException {
            WriteAntennas runJob = new WriteAntennas();
            runJob.createTable();
            runJob.performLoadWrite();
            runJob.queryRecords();
            runJob.closeConnection();
    }

  • How to get comparable Oracle JDBC performance using Java 1.4 vs 1.1.7?

    Our application makes extensive use of JDBC to access an Oracle database. We wrote it a number of years ago using java 1.1.7 and we have been unable to move to new versions of java because of the performance degradation.
    I traced the problem to JDBC calls. I can reproduce the problem using a simple program that simply connects to the database, executes a simple query and then reads the data. The same program running under java 1.4 is about 60% slower than under java 1.1.7. The query is about 80% slower and getting the data is about 150% slower!
    The program is attached below. Note, I run the steps twice as the first time the times are much larger which I attribute to java doing some initializations. So the second set of values I think are more representative of the actual performance in our application where there are numerous accesses to the database. Specifically, I focus on step 4 which is the execute query command and step 5 which is the data retrieval step. The table being read has 4 columns with 170 tuples in it.
    Here are the timings I get when I run this on a Sparc Ultra 5 running
    SunOs 5.8 using an Oracle database running 8.1.7:
                     java 1.1.7  java 1.4
            overall:    2.1s         3.5s
            step 1:     30           200
            step 2:    886          2009
            step 3:      2             2
            step 4:      9            17
            step 5:    122           187
            step 6:      1             1
            step 1:      0             0
            step 2:    203           161
            step 3:      0             1
            step 4:      8            15   <-   87% slower
            step 5:     48           117   <-  143% slower
            step 6:      1             2I find the same poor performance from java versions 1.2 and 1.3.
    I tried using DataDirect's type 4 JDBC driver which gives a little better performance but overall it is still much slower than using java 1.1.7.
    Why do the newer versions of java have such poor performance when using JDBC?
    What can be done so that we can have performance similar to java 1.1.7
    using java 1.4?
    ========================================================================
    import java.util.*;
    import java.io.*;
    import java.sql.*;
    public class test12 {
        public static void main(String args[]) {
            try {
                    long time1 = System.currentTimeMillis();
    /* step 1 */  DriverManager.registerDriver(
                        new oracle.jdbc.driver.OracleDriver());
                    long time2 = System.currentTimeMillis();
    /* step 2 */  Connection conn = DriverManager.getConnection (
                  "jdbc:oracle:thin:@dbserver1:1521:db1","user1","passwd1");
                    long time3 = System.currentTimeMillis();
    /* step 3 */  Statement stmt = conn.createStatement();
                    long time4 = System.currentTimeMillis();
    /* step 4 */  ResultSet rs = stmt.executeQuery("select * from table1");
                    long time5 = System.currentTimeMillis();
    /* step 5 */  while( rs.next() ) {
                      int message_num = rs.getInt(1);
                      String message = rs.getString(2);
                    long time6 = System.currentTimeMillis();
    /* step 6 */  rs.close(); stmt.close();
                    long time7 = System.currentTimeMillis();
                System.out.println("step 1: " + (time2 - time1) );
                System.out.println("step 2: " + (time3 - time2) );
                System.out.println("step 3: " + (time4 - time3) );
                System.out.println("step 4: " + (time5 - time4) );
                System.out.println("step 5: " + (time6 - time5) );
                System.out.println("step 6: " + (time7 - time6) );
                System.out.flush();
            } catch ( Exception e ) {
                System.out.println( "got exception: " + e.getMessage() );
            ... repeat the same 6 steps again...
    }

    If I run my sample program with the -server option, it
    takes a lot longer (6.8s vs 3.5s).Which has to be expected, as the -server option optimizes for long running programs - so it shoudl go with my second suggestion, more below...
    I am not certain what you mean by "just let the jvm
    running". Our users issue a command (in Unix) which
    invokes one of our java programs to access or update
    data in a database. I think what you are suggesting
    would require that I rewrite our application to have a
    java program always running on the users workstation
    and to also rewrite our
    commands (over a hundred) to some how pass data and
    receive data with this new server java program. That
    does not seem a very reasonable just to move to a new
    version of java. Or are you suggesting something
    else?No I was just suggestion what you descript. But if this is not an option, then maybe you should merge your java-programs to C or another native language. Or you could try the IBM-JDK with the -faststart (or similar) option. If thew Unix you mention is AIX, then there would be the option of a resetable-vm. But I cannot say if this VM would solve your problem. Java is definitly not good for applications which only issue some unqiue commands because the hotspot-compiler can not be efficiently used there. You can only try to get 1.1.7 performance by experimenting with vm-parameters (execute java -X).

  • JDBC Problem with Oracle 8.1.7. and OC4J  Version 2

    I use the following connection statement with Oracle 8.1.7. and JDeveloper 3 and Apache Server. It works fine.
    String user = "scott/tiger";
    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
    Connection conn = DriverManager.getConnection("jdbc:oracle:oci8:"+user+"@RDL");
    The same program does not obtain the connection with JDeveloper 9i, OC4J Version 2 and Oracle 8.1.7. I do not receive any error message, no exception is thrown.
    Please help me.

    Hi Avi,
    I had already tried the thin Diriver but after yout help I try again.
    With this thin driver, I received a SQLException which helps me.
    As usual, there were a lot of different problems. The main one was that my default configuration do not use the jdbc/lib817 main jdbc/lib. There is a classe12.jar in these libs that are apparently different.
    Finally, I obtain the connection with the "thin" driver.
    Thank you very much Avi!
    Reni

  • JDBC with SQL Server

    Hi,
    I am trying to connect to a SQL server database by giving table name in (SPVC) database as spvc.dbo.tablename.. If i want to access another database (SPVC_D), how can i do it without changing my java code?? Can i be able to add the database name to the connection string and i can remove the hard coding (spvc.dbo.) from my java code?? How shall i be able to do that..
    Please let me know.. I am very new with JDBC with SQL server..
    Thanks
    Praveen Padala

    In the MS SQL Server that I use, the following syntax
    spvc.dbo.tablename
    Breaks done as follows...
    <database>.<user>.<tablename>
    However connections are always to a database. Thus when one uses the above syntax it basically runs 'in' the one database and accesses another.
    Depending on various attributes of the tables, if and only if, a table called 'tablename' exists in a database called 'spvc_d' then if you connect to 'spvc_d' then you can access 'tablename' just by using 'tablename'.
    So if that is what you are doing you will not have a problem.

  • A sign Applet unable to load "oracle.jdbc.OracleDriver" class

    hi,
    i am chiranjit , i am now working in a web based ERP. where i am using a signed applet which unable to load "oracle.jdbc.OracleDriver" class but it easily loading "sun.jdbc.odbc.JdbcOdbcDriver", i am also giving my code:
    import java.sql.*;
    import java.math.*;
    import java.io.*;
    import java.awt.*;
    class JdbcTest extends Applet{
    public static void main (String args[]) throws SQLException {
    // Load Oracle driver
    DriverManager.registerDriver (new oracle.jdbc.OracleDriver());
    // Connect to the local database
    Connection conn =
    DriverManager.getConnection
    ("jdbc:oracle:thin:@192.168.16.7:1521:kris",
    "plsql", "oracle");
    // Query the employee names
    Statement stmt = conn.createStatement ();
    ResultSet rset = stmt.executeQuery ("SELECT FIRST_NAME FROM
    AUTHORS");
    // Print the name out
    while (rset.next ())
    System.out.println (rset.getString (1));
    // Close the result set, statement, and the connection
    rset.close();
    stmt.close();
    conn.close();
    }

    Hint: The sun.jdbc.odbc.JdbcOdbcDriver is available in any JRE distribution. The Oracle driver is not.

  • Help  connection to oracle db using jdbc

    Hi
    I am trying to connect to a oracle database. I am using Oracle 9 and jsdk 1.4.2. but i keep getting the following error and i dont know what iam doing wrong.
    I have put in my classpath where the orcle drivers are. I have also tried puting the drivers in j2sdk/jre/lib folder (files copied nls_charset12.zip,classes12.zip,ojdbc14.jar). My code compiles and runs but the error i get is
    "java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver"
    SAMPLE of my code:
    Class.forName("oracle.jdbc.driver.OracleDriver");
    String dataSource = "jdbc:oracle:thin:@devflgdb";
    Connection con = DriverManager.getConnection(dataSource,"babu_s2","babu_s2");

    I am working on the same; here is my servlet code, hope it helps
    private static void loadJDBCDriver ()
    System.out.println ("Loading Database driver...");
    try {
         DriverManager.registerDriver ( new oracle.jdbc.driver.OracleDriver());
    catch (Exception e) {}
    try {
    DriverManager.registerDriver ( new sun.jdbc.odbc.JdbcOdbcDriver() );
    catch (Exception e2) {
    System.err.println ("loadJDBCDriver: " + e2.toString());
    return;
    System.out.println ("Database driver loaded...");
    private static Connection getConnected () {
    System.out.println ("Establishing database connection...");
    String jdbc_url;
    Connection conn;
    try {
    jdbc_url = "jdbc:oracle:thin:@localhost:1521:oracle";
    conn = DriverManager.getConnection (jdbc_url, "scott", "tiger");
    catch (Exception e) {
    try {
    jdbc_url = "jdbc:odbc:BookNook";
    conn = DriverManager.getConnection (jdbc_url);
    catch (SQLException e2) {
    System.err.println ("getConnected: " + e2.toString() );
    return null;
    System.out.println ("Database connection established ...");
    return conn;

  • Error While Compiling Jdbc Application

    Hi,
    I am getting an error while compiling a JDBC application ... as shon below...
    please help me regardinmg this and also please specify how to include jar file ....
    JdbcApp.java:5: package Oracle.jdbc.driver does not exist
    DriverManager.registerDriver(new Oracle.jdbc.driver.OracleDriver());

    Thanx for that!!!
    but i am still getting the exception...
    D:\Java>java JdbcApp
    Exception in thread "main" java.sql.SQLException: Io exception: The Network Adap
    ter could not establish the connection
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)
    at oracle.jdbc.ttc7.TTC7Protocol.handleIOException(TTC7Protocol.java:366
    8)
    at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:353)
    at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:371)
    at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.ja
    va:551)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:351)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:171)
    at JdbcApp.main(JdbcApp.java:7)
    kindly solve this...

  • Error ORA-01403: no data found is not raised using jdbc

    Hy there I have a problem receiving exceptions from oracle jdbc driver.
    I have the following exception stack if i call insert on a view
    using an instead of trigger.
    ORA-01403: no data found
    ORA-04088: error during execution of trigger
    'MYUSER.MY_VIEW_INSERT'
    if I do the insert by sql worksheet.
    If I do same insert using the following driver
    dbDriver = new intersolv.jdbc.sequelink.SequeLinkDriver();
    I will receive this exception:
    java.sql.SQLException: [INTERSOLV][SequeLink JDBC Driver][ORACLE]ORA-01403: Keine Daten gefunden
    Now if I do same thing using oracle driver:
    dbDriver = new oracle.jdbc.driver.OracleDriver();
    there will no exception be raised!
    here is my code:
    public class myFrame extends Frame
    public static void main( String[] args )
    Frame myFrame = new Frame();
    DbPflege dbPanel = new DbPflege();
    Driver dbDriver = null;
    String connectString = null;
    try
    if( args.length != 0 )
    System.out.println( "main: use sequelink!" );
    connectString = "jdbc:sequelink://myServer:4003/[Oracle]";
    dbDriver = new intersolv.jdbc.sequelink.SequeLinkDriver();
    else
    System.out.println( "main: use oracle!" );
    connectString = "jdbc:oracle:thin:@myServer:1521:idb";
    dbDriver = new oracle.jdbc.driver.OracleDriver();
    DriverManager.registerDriver( dbDriver );
    dbPanel.con = DriverManager.getConnection(connectString, "user", "pwd" );
    catch( Exception ex )
    System.out.println( "main: ERROR: " + ex );
    ex.printStackTrace();
    void jBtnExecute_actionPerformed(java.awt.event.ActionEvent event)
    Statement stmt = null;
    int updateCount = -1;
    int colCount = -1;
    ResultSet rs = null;
    ResultSetMetaData rsMeta = null;
    try
    stmt = con.createStatement();
    stmt.execute( textAreaInput.getText() );
    catch( Exception ex )
    textAreaOutput.append( ex.toString() );
    thanks for your help!!!!

    Hi,
    You should run you query in sql workshop with the expected values (which are set after user clicks Save or Apply changes button) for P10_CR_BOM_CODE and P10_CR_ID.
    Also, please have an exception block in the process to catch any exception and make an appropriate Insert into some user defined error-log table. It would be better to log the P10_CR_BOM_CODE and P10_CR_ID values in case of exception.
    These might help you to figure out the cause of exception.
    Regards,
    Mangal

  • Problem: connect DB with Applet by JDBC-ODBC bridge

    Dear all,
    When I connect local MS SQL server by "sun.jdbc.odbc.JdbcOdbcDriver" as below, it works well! However, when I put the similar code under Java Applet program, it cannot run by showing error:
    java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:272)
    at java.security.AccessController.checkPermission(AccessController.java:399)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
    at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1501)
    at sun.applet.AppletSecurity.checkPackageAccess(AppletSecurity.java:169)
    I think Java Applet has some security policy when I try to use applet to connect(read/write) DB. How can I solve it so that I can browse my applet under IE.
    Thanks a lot!
    Here is my worked code in Java program but not in Applet:
    import java.sql.*;
    public class TestJDBC1 {
    public static void main(String args[]) throws Exception {
    String userid = "";
    String password = "";
    // Register the driver with DriverManager
    new sun.jdbc.odbc.JdbcOdbcDriver();
    // Get a connection
    Connection conn = DriverManager.getConnection("jdbc:odbc:rdr",
    userid, password);
    // Create a statement for executing SQL
    Statement stmt = conn.createStatement();
    // Execute a query / SELECT statement
    ResultSet rset = stmt.executeQuery("SELECT * FROM PlatformNode");
    ResultSetMetaData rsmd = rset.getMetaData();
    // Find out how many columns were returned by the query
    int count = rsmd.getColumnCount();
    // Loop until all rows have been processed
    while (rset.next()) {
    // Loop until all columns in current row have been processed
    for (int i = 1; i <= count; i++) {
    // Print out the current value
    System.out.print(rset.getObject(i));
    // Put a comma between each value
    if (i < count) {
    System.out.println(",");
    // Start the next row's values on a new line
    System.out.println("");
    // Close the database objects
    rset.close();
    stmt.close();
    conn.close();

    Hi,
    Applets by default are restricted from accessing a lot of things.to enable applest from accessing database and other thngs u need to edit the policy file
    Try this.
    go to the jre/bin directory open the policytool.exe file
    and add permission(in ur case RuntimePermission to access class in package sun.jdbc.odbc) and save the file.
    this will enable applets from accessing the databse.
    Hope that helps
    Note:
    policytool.exe must be used to open the java.policy file present in /jre/lib/security directory and then add the permissions
    regards,
    Partha

  • Having problems with new WebLogic MS SQL driver WLS 8.1

    Hi,
    We've recently migrated our application from WLS 6.1 to WLS 8.1. We use an MS SQL database. In 6.1 we used the (now deprecated) weblogic.jdbc.mssqlserver4.Driver driver. In 8.1 we now use the new weblogic.jdbc.sqlserver.SQLServerDriver driver. We now are seeing NullPointerExceptions with the new driver that we never saw when running in 6.1 (with the old driver). The exception is occuring at the driver level. I'll paste some of the stack traces below but here is a quick synopsis of our usage pattern:
    -standard get-use-close pattern on the connection for each request (connection is closed in finally block).
    -pool size: min 1, max 7, increment 5
    -test on reserver enabled
    -we are simply reading data (no updates)
    -we use a single thread that hits the database so there is only ever one active application thread hitting the DB.
    -we are using a stored proc.
    -we setTimeout on the statement (initial testing seems to indicate that query timeout seems to be at the root of the problem)
    The problem seems to occur when statement timeouts occur. I can recreate the problem by setting the statement timeout to 1 sec and throwing a lot data at the DB. What seems to occur is a query hits the timeout and a SocketException is thrown, subsequent queries then throw a NullPointer in the driver layer. Again, this is the behavior under WLS 8.1 with the new weblogic.jdbc.sqlserver.SQLServerDriver driver. If I use the old driver (weblogic.jdbc.mssqlserver4.Driver) under WLS 8.1 all I get is the SocketException (which is what I want). This application ran under WLS 6.1 with the old driver processing millions of queries without any problems.
    We are wondering:
    (1) Is this a known problem?
    (2) Is there a recommended workaround?
    Cheers, and as always thanks in advance for any help.
    Stack traces follow.
    Thank,
    Mich
    Here are some failure traces from the WLS 8.1 new driver:
    java.sql.SQLException: [BEA][SQLServer JDBC Driver]Execution timeout expired.
         at weblogic.jdbc.base.BaseExceptions.createException(Unknown Source)
         at weblogic.jdbc.base.BaseExceptions.getException(Unknown Source)
         at weblogic.jdbc.base.BaseStatement.postProcessExceptionFromCommonExecute(Unknown Source)
         at weblogic.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
         at weblogic.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
         at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:124)
         at com.our.QueryHandler.execute(QueryHandler.java:79)
    THEN WHEN A SUBSEQUENT QUERY IS MADE:
    java.lang.NullPointerException
         at weblogic.jdbc.sqlserver.tds.TDSRequest.switchColumnDescriptions(Unknown Source)
         at weblogic.jdbc.sqlserver.tds.TDSRequest.processRow(Unknown Source)
         at weblogic.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
         at weblogic.jdbc.sqlserver.tds.TDSRPCRequest.processReplyToken(Unknown Source)
         at weblogic.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
         at weblogic.jdbc.sqlserver.tds.TDSRPCNonCursorExecuteRequest.submitPrepare(Unknown Source)
         at weblogic.jdbc.sqlserver.tds.TDSRPCExecuteRequest.doPrepExec(Unknown Source)
         at weblogic.jdbc.sqlserver.tds.TDSRPCExecuteRequest.execute(Unknown Source)
         at weblogic.jdbc.sqlserver.SQLServerImplStatement.execute(Unknown Source)
         at weblogic.jdbc.base.BaseStatement.commonExecute(Unknown Source)
         at weblogic.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source)
         at weblogic.jdbc.base.BasePreparedStatement.executeQuery(Unknown Source)
         at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:124)
         at com.our.QueryHandler.execute(QueryHandler.java:79)
    Just to be complete here is the stacktrace generated by a timeout using the old driver on WLS 8.1 (again, this one behaves as expected):
    weblogic.jdbc.mssqlserver4.TdsException: I/O exception while talking to the server, java.net.SocketTimeoutException: Read timed out
         at weblogic.jdbc.mssqlserver4.TdsStatement.getMoreResults(TdsStatement.java:813)
         at weblogic.jdbc.mssqlserver4.TdsStatement.execute(TdsStatement.java:210)
         at weblogic.jdbc.mssqlserver4.TdsStatement.executeQuery(TdsStatement.java:54)
         at weblogic.jdbc.mssqlserver4.TdsStatement.executeQuery(TdsStatement.java:1424)
         at weblogic.jdbc.wrapper.PreparedStatement.executeQuery(PreparedStatement.java:124)

    Michel Crichton wrote:
    Hi,
    Thanks for the prompt reply. In answer to your questions:
    What I would like to know is the exact code/sequence that causes the subsequent exception. See the sequence of calls at the end of this reply.
    Is this in the same thread in the very next call?
    I replicated the problem by going through the Web container (5 clients) therefore WebLogic threads are used in this case. I see from the logs 4-5 different execute threads at work (ex. ExecuteThread: '10' for queue: 'weblogic.kernel.Default').
    Does it happen all the time?
    Although it is tough to tell for sure, once it starts happening it seems to happen most if not all the time.
    Is it an attempted re-use of the same statement, or trying to use a different statement?
    We do a connection.prepareStatement(QUERY_STRING) call everytime (there is only one per request/response cycle). I believe WLS caches statements behind the scenes though so I suspect at that level there is reuse. There is only one stored proc used (we vary the params per call).
    Please show me your pool definition from the config.xml
    file, and I will send you instructions to produce some
    debug info that will get us to the heart of this matter.
    <JDBCConnectionPool
    DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
    MaxCapacity="5" Name="THE POOL"
    PasswordEncrypted="XXX"
    Properties="user=XXX;portNumber=XXX;databaseName=XX;serverName=X.X.X.X"
    Targets="Server"
    TestConnectionsOnReserve="true" TestTableName="TEST_TABLE" URL="jdbc:bea:sqlserver://X.X.X.X:XXX"/>Ok, do these things:
    1 - Add our spy attribute to your pool definition, like this:
    <JDBCConnectionPool
    DriverName="weblogic.jdbc.sqlserver.SQLServerDriver"
    MaxCapacity="5" Name="THE POOL"
    PasswordEncrypted="XXX"
    Properties="user=XXX;portNumber=XXX;databaseName=XX;serverName=X.X.X.X"
    Targets="Server"
    TestConnectionsOnReserve="true"
    TestTableName="TEST_TABLE"
    URL="jdbc:bea:sqlserver://X.X.X.X:XXX;spyAttributes=(log=(file)spy.log;timestamp=yes)"/>
    2 - Edit the start-weblogic script to add the spy jar (wlspy.jar) to the
    classpath that the script creates for the server, eg:
    set CLASSPATH=%WL_HOME%\server\lib\wlspy.jar;%CLASSPATH%
    3 - Reboot and duplicate the problem as briefly as possible.
    4 - In the same directory where you start the server, you will
    now find a file named 'spy.log'. Please send it to me. ( j o e AT b e a DOT c o m )
    I will try to reproduce the problem.
    5 - Ask BEA support for the latest BEA driver package and install it according to
    their instructions. Let me know asap if the probem is still there.
    thanks
    Joe
    >
    Also, I forgot to post in the original message some of the WLS stdout related logging we see. Here it is (sorry, it's a little messy):
    11:38:37 o'clock AM EST> <Error> <JDBC> <ExecuteThread: '11' for queue: 'weblogic.kernel.Default'> <> <BEA-001131> <Received an exception when closing a cached statement for the pool " THE POOL": java.sql.SQLException: [BEA][SQLServer JDBC Driver]The operation was cancelled at the user's request..>
    11:38:37 o'clock AM EST> <Error> <JDBC> <ExecuteThread: '13' for queue: 'weblogic.kernel.Default'> <> <BEA-001131> <Received an exception when closing a cached statement for the pool " THE POOL": java.sql.SQLException: [BEA][SQLServer JDBC Driver]The operation was cancelled at the user's request..>
    11:38:37 o'clock AM EST> <Error> <JDBC> <ExecuteThread: '10' for queue: 'weblogic.kernel.Default'> <> <BEA-001131> <Received an exception when closing a cached statement for the pool " THE POOL": java.sql.SQLException: [BEA][SQLServer JDBC Driver]The operation was cancelled at the user's request..>
    11:38:38 o'clock AM EST> <Error> <JDBC> <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <> <BEA-001112> <Test "select count(*) from TEST_TABLE" set up for pool " THE POOL" failed with exception: "java.sql.SQLException: [BEA][SQLServer JDBC Driver]A problem occurred when attempting to contact the server (Server returned: Connection reset). Please ensure that the server parameters passed to the driver are correct and that the server is running. Also ensure that the maximum number of connections
    have not been exceeded for this server.".>
    11:38:38 o'clock AM EST> <Info> <JDBC> <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <> <BEA-001128> <Connection for pool " THE POOL" closed.>
    11:38:38 o'clock AM EST> <Info> <JDBC> <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <> <BEA-001067> <Connection for pool " THE POOL" refreshed.>
    11:38:40 o'clock AM EST> <Error> <JDBC> <ExecuteThread: '10' for queue: 'weblogic.kernel.Default'> <> <BEA-001112> <Test "select count(*) from TEST_TABLE" set up for pool " THE POOL" failed with exception: "java.sql.SQLException: [BEA][SQLServer JDBC Driver]A problem occurred when attempting to contact the server (Server returned: Connection reset). Please ensure that the server parameters passed to the driver are correct and that the server is running. Also ensure that the maximum number of connections
    have not been exceeded for this server.".>
    11:38:40 o'clock AM EST> <Info> <JDBC> <ExecuteThread: '10' for queue: 'weblogic.kernel.Default'> <> <BEA-001128> <Connection for pool " THE POOL" closed.>
    11:38:40 o'clock AM EST> <Info> <JDBC> <ExecuteThread: '10' for queue: 'weblogic.kernel.Default'> <> <BEA-001067> <Connection for pool " THE POOL" refreshed.>
    11:38:41 o'clock AM EST> <Error> <JDBC> <ExecuteThread: '13' for queue: 'weblogic.kernel.Default'> <> <BEA-001131> <Received an exception when closing a cached statement for the pool " THE POOL": java.sql.SQLException: [BEA][SQLServer JDBC Driver]The operation was cancelled at the user's request..>
    11:38:41 o'clock AM EST> <Error> <JDBC> <ExecuteThread: '10' for queue: 'weblogic.kernel.Default'> <> <BEA-001131> <Received an exception when closing a cached statement for the pool " THE POOL": java.sql.SQLException: [BEA][SQLServer JDBC Driver]The operation was cancelled at the user's request..>
    Here is the sequence of calls we make (notice the statement is closed outside the finally however we assume the connection.close should close associated resources):
    PreparedStatement statement = null;
    try {
    connection = dataSource.getConnection();
    statement = connection.prepareStatement(QUERY_STRING);
    statement.setString(1, name1);
    statement.setString(2, name2);
    statement.setQueryTimeout(timeout);
    ResultSet resultSet = statement.executeQuery();     
    //iterate over result set
    statement.close();
    return result;               
    } catch (SQLException e1) {
    //log
    } finally {
    try {
    if(connection != null)
    connection.close();
    } catch (SQLException e2) {
    //log
    Thanks again,
    Mich

Maybe you are looking for