Search Postgresql Archives

JDBC prepared statement is not treated as prepared statement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello:

 

I  have one question about prepared statement.

I use Java via JDBC, then send prepared statement to execute.

I thought that the pg_prepared_statments  view will have one record after my execution.

But I can't find.

 

Is the JDBC's prepared statement  differ from  SQL execute by prepare command ?

http://www.postgresql.org/docs/current/static/sql-prepare.html

 

My simple java program is the following:

 

import java.sql.*;

 

public class Test01 {

 

        public static void main(String argsv[]){

        try

         {

           Class.forName("org.postgresql.Driver").newInstance();

           String url = "" ;

   

           Connection con = DriverManager.getConnection(url,"postgres","postgres" );

          

           ///Phase 1:-------------Select data from table-----------------------

 

          

           System.out.println("Phase 1------------------------start");

          

           String strsql = " select * from customers where cust_id = ?";

           PreparedStatement pst=con.prepareStatement(strsql);

 

           pst.setInt(1,3); //find the customer with cust_id of 3.

          

           ResultSet rs = pst.executeQuery();

          

           while (rs.next())

            {

               System.out.print("cust_id:"+rs.getInt( "cust_id"));

               System.out.println("...cust_name:"+rs.getString( "cust_name" ));

           }

           System.out.println("Phase 1------------------------end\n");

          

          

          

           ///Phase 2:-------------Use connection again,to select data from data dictionary-----------------------

          

           System.out.println("Phase 2------------------------start");

          

           strsql = "select * from pg_prepared_statements";

           pst=con.prepareStatement(strsql);          

          

           rs = pst.executeQuery();

          

           while (rs.next())

           {

              System.out.println("statement:"+rs.getString( "statement"));

           }          

           System.out.println("Phase 2------------------------end\n");          

          

           ///Phase 3:-------------Use connection again,to select data from table-----------------------

 

           System.out.println("Phase 3------------------------start");          

           strsql = "select * from customers";

           pst=con.prepareStatement(strsql);          

          

           rs = pst.executeQuery();

          

           while (rs.next())

           {

              System.out.print("cust_id:"+rs.getInt( "cust_id"));

              System.out.println("...cust_name:"+rs.getString( "cust_name" ));

          }           

         

          System.out.println("Phase 3------------------------end\n");           

          

          rs.close();          

          pst.close();

          con.close();

          

       }

        catch (Exception ee)

        {

           System.out.print(ee.getMessage());

       }

        }

 

}

 

The result of it's execution is:

Phase 1------------------------start

cust_id:3...cust_name:Taylor

Phase 1------------------------end

 

Phase 2------------------------start

Phase 2------------------------end

 

Phase 3------------------------start

cust_id:1...cust_name:Smith

cust_id:2...cust_name:Brown

cust_id:3...cust_name:Taylor

Phase 3------------------------end

 

That is to say: my prepared statement is not cached by PG?

Then how to write a  java program to made it's prepared statement realized by PG to treat it as a "prepared statement"?

Thank you.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux