basic.java
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:6k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. package example;
  2. import java.io.*;
  3. import java.sql.*;
  4. import java.text.*;
  5. /**
  6.  * This example tests the basic components of the JDBC driver, and shows
  7.  * how even the simplest of queries can be implemented.
  8.  *
  9.  * To use this example, you need a database to be in existence. This example
  10.  * will create a table called basic.
  11.  *
  12.  */
  13. public class basic
  14. {
  15.   Connection db; // The connection to the database
  16.   Statement  st; // Our statement to run queries with
  17.   
  18.   public basic(String args[]) throws ClassNotFoundException, FileNotFoundException, IOException, SQLException
  19.   {
  20.     String url = args[0];
  21.     String usr = args[1];
  22.     String pwd = args[2];
  23.     
  24.     // Load the driver
  25.     Class.forName("postgresql.Driver");
  26.     
  27.     // Connect to database
  28.     System.out.println("Connecting to Database URL = " + url);
  29.     db = DriverManager.getConnection(url, usr, pwd);
  30.     
  31.     System.out.println("Connected...Now creating a statement");
  32.     st = db.createStatement();
  33.     
  34.     // Clean up the database (in case we failed earlier) then initialise
  35.     cleanup();
  36.     
  37.     // Now run tests using JDBC methods
  38.     doexample();
  39.     
  40.     // Clean up the database
  41.     cleanup();
  42.     
  43.     // Finally close the database
  44.     System.out.println("Now closing the connection");
  45.     st.close();
  46.     db.close();
  47.     
  48.     //throw postgresql.Driver.notImplemented();
  49.   }
  50.   
  51.   /**
  52.    * This drops the table (if it existed). No errors are reported.
  53.    */
  54.   public void cleanup()
  55.   {
  56.     try {
  57.       st.executeUpdate("drop table basic");
  58.     } catch(Exception ex) {
  59.       // We ignore any errors here
  60.     }
  61.   }
  62.   
  63.   /**
  64.    * This performs the example
  65.    */
  66.   public void doexample() throws SQLException
  67.   {
  68.     System.out.println("nRunning tests:");
  69.     
  70.     // First we need a table to store data in
  71.     st.executeUpdate("create table basic (a int2, b int2)");
  72.     
  73.     // Now insert some data, using the Statement
  74.     st.executeUpdate("insert into basic values (1,1)");
  75.     st.executeUpdate("insert into basic values (2,1)");
  76.     st.executeUpdate("insert into basic values (3,1)");
  77.     
  78.     // Now change the value of b from 1 to 8
  79.     st.executeUpdate("update basic set b=8");
  80.     System.out.println("Updated "+st.getUpdateCount()+" rows");
  81.     
  82.     // For large inserts, a PreparedStatement is more efficient, because it
  83.     // supports the idea of precompiling the SQL statement, and to store
  84.     // directly, a Java object into any column. PostgreSQL doesnt support
  85.     // precompiling, but does support setting a column to the value of a
  86.     // Java object (like Date, String, etc).
  87.     //
  88.     // Also, this is the only way of writing dates in a datestyle independent
  89.     // manner. (DateStyles are PostgreSQL's way of handling different methods
  90.     // of representing dates in the Date data type.)
  91.     PreparedStatement ps = db.prepareStatement("insert into basic values (?,?)");
  92.     for(int i=2;i<5;i++) {
  93.       ps.setInt(1,4); // "column a" = 5
  94.       ps.setInt(2,i); // "column b" = i
  95.       ps.executeUpdate(); // executeUpdate because insert returns no data
  96.     }
  97.     ps.close(); // Always close when we are done with it
  98.     
  99.     // Finally perform a query on the table
  100.     System.out.println("performing a query");
  101.     ResultSet rs = st.executeQuery("select a, b from basic");
  102.     if(rs!=null) {
  103.       // Now we run through the result set, printing out the result.
  104.       // Note, we must call .next() before attempting to read any results
  105.       while(rs.next()) {
  106. int a = rs.getInt("a"); // This shows how to get the value by name
  107. int b = rs.getInt(2); // This shows how to get the value by column
  108. System.out.println("  a="+a+" b="+b);
  109.       }
  110.       rs.close(); // again, you must close the result when done
  111.     }
  112.     
  113.     // Now run the query again, showing a more efficient way of getting the
  114.     // result if you don't know what column number a value is in
  115.     System.out.println("performing another query");
  116.     rs = st.executeQuery("select * from basic where b>1");
  117.     if(rs!=null) {
  118.       // First find out the column numbers.
  119.       //
  120.       // It's best to do this here, as calling the methods with the column
  121.       // numbers actually performs this call each time they are called. This
  122.       // really speeds things up on large queries.
  123.       //
  124.       int col_a = rs.findColumn("a");
  125.       int col_b = rs.findColumn("b");
  126.       
  127.       // Now we run through the result set, printing out the result.
  128.       // Again, we must call .next() before attempting to read any results
  129.       while(rs.next()) {
  130. int a = rs.getInt(col_a); // This shows how to get the value by name
  131. int b = rs.getInt(col_b); // This shows how to get the value by column
  132. System.out.println("  a="+a+" b="+b);
  133.       }
  134.       rs.close(); // again, you must close the result when done
  135.     }
  136.     
  137.     // The last thing to do is to drop the table. This is done in the
  138.     // cleanup() method.
  139.   }
  140.   
  141.   /**
  142.    * Display some instructions on how to run the example
  143.    */
  144.   public static void instructions()
  145.   {
  146.     System.out.println("nThis example tests the basic components of the JDBC driver, demonstratingnhow to build simple queries in java.n");
  147.     System.out.println("Useage:n java example.basic jdbc:postgresql:database user password [debug]nnThe debug field can be anything. It's presence will enable DriverManager'sndebug trace. Unless you want to see screens of items, don't put anything innhere.");
  148.     System.exit(1);
  149.   }
  150.   
  151.   /**
  152.    * This little lot starts the test
  153.    */
  154.   public static void main(String args[])
  155.   {
  156.     System.out.println("PostgreSQL basic test v6.3 rev 1n");
  157.     
  158.     if(args.length<3)
  159.       instructions();
  160.     
  161.     // This line outputs debug information to stderr. To enable this, simply
  162.     // add an extra parameter to the command line
  163.     if(args.length>3)
  164.       DriverManager.setLogStream(System.err);
  165.     
  166.     // Now run the tests
  167.     try {
  168.       basic test = new basic(args);
  169.     } catch(Exception ex) {
  170.       System.err.println("Exception caught.n"+ex);
  171.       ex.printStackTrace();
  172.     }
  173.   }
  174. }