home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 December / PCWorld_1998-12_cd.iso / software / sybase / ASA / asa60.exe / data1.cab / jxmp_files / JDBCExamples.java < prev    next >
Text File  |  1998-07-27  |  9KB  |  298 lines

  1. // Import the necessary classes
  2. import java.sql.*;             // JDBC
  3. import com.sybase.jdbc.*;      // Sybase jConnect
  4. import java.util.Properties;   // Properties
  5. import sybase.sql.*;           // Sybase utilities
  6. import asademo.*;              // Example classes
  7.  
  8. public class JDBCExamples{
  9.   
  10.   private static Connection conn;
  11.  
  12.   public static void main( String args[] ){
  13.     
  14.     conn = null;
  15.     String machineName;
  16.     if ( args.length != 1 ) {
  17.       machineName = "localhost";
  18.     } else {
  19.       machineName = new String( args[0] );
  20.     }
  21.  
  22.     ASAConnect( "dba", "sql", machineName );
  23.     if( conn!=null ) {
  24.         System.out.println( "Connection successful" );
  25.     }else{
  26.         System.out.println( "Connection failed" );
  27.     }
  28.  
  29.     try{
  30.       serializeVariable();
  31.       serializeColumn();    
  32.       serializeColumnCastClass();
  33.     }
  34.     catch( Exception e ) {
  35.       System.out.println( "Error: " + e.getMessage() );
  36.       e.printStackTrace();
  37.     }  
  38.   }
  39.  
  40.   //    Create a native Java object in database 
  41.   //    server and pass object to client.
  42.   private static void serializeVariable() throws Exception {
  43.     Statement stmt;
  44.     ResultSet rs;
  45.     byte arrayb[];
  46.     String    strTestObject;
  47.     
  48.     if ( !conn.isClosed()  ) {
  49.       stmt = conn.createStatement();
  50.       stmt.execute( "CREATE VARIABLE strServerSide java.lang.String;" );
  51.       stmt.execute( "SET strServerSide = new java.lang.String(\'Java string created on server\');" );
  52.       stmt.execute( "CREATE VARIABLE long_bin long binary" );
  53.       stmt.execute( "SET long_bin = sybase.sql.ASAUtils.toByteArray( strServerSide )" );
  54.       rs = stmt.executeQuery( "SELECT long_bin" ); 
  55.       
  56.       rs.next();        // move to first item in resultset    
  57.       arrayb = rs.getBytes(1);     // assign contents of long_bin to byte array
  58.       // The type of object on the server
  59.       // must be known to cast it correctly 
  60.       strTestObject = (java.lang.String)sybase.sql.ASAUtils.fromByteArray( arrayb );
  61.       System.out.println( "Java String object created on ASA server, contains: " + 
  62.               strTestObject.toString() + "\n\n" );
  63.     }
  64.   }
  65.     
  66.   //    Return a result set from a column containing Java objects 
  67.   private static void serializeColumn() throws Exception {
  68.     Statement stmt;
  69.     ResultSet rs;
  70.     byte arrayb[]; 
  71.     asademo.ContactInfo ci;
  72.     String name;
  73.     
  74.     if ( conn != null ) {
  75.       stmt = conn.createStatement();
  76.       rs = stmt.executeQuery( "SELECT " 
  77.         + "sybase.sql.ASAUtils.toByteArray( JName.getName() ) AS Name, "
  78.         + "sybase.sql.ASAUtils.toByteArray( jdba.contact.JContactInfo ) "
  79.         + "FROM jdba.contact" );
  80.       
  81.       while ( rs.next() ) {
  82.     arrayb = rs.getBytes("Name");
  83.     name = ( String )sybase.sql.ASAUtils.fromByteArray( arrayb );
  84.     arrayb = rs.getBytes(2);
  85.     ci = (asademo.ContactInfo)sybase.sql.ASAUtils.fromByteArray( arrayb );
  86.     System.out.println( "Name: " + name + 
  87.                 "\n\tStreet: " + ci.street + 
  88.                 "\n\tCity: " + ci.city + 
  89.                 "\n\tState: " + ci.state + 
  90.                 "\n\tPhone: " + ci.phone + 
  91.                 "\n" );
  92.       }
  93.       System.out.println( "\n\n" );
  94.     }
  95.   }
  96.  
  97.   //    Return a result set of Java objects 
  98.   //    and cast them correctly. 
  99.   private static void serializeColumnCastClass() throws Exception {
  100.     Statement stmt;
  101.     ResultSet rs;
  102.     byte arrayb[]; 
  103.     asademo.Product product;  
  104.     asademo.Hat hat;  
  105.     Object o;
  106.     String strClassname;
  107.     
  108.     if ( conn!=null ) {
  109.       stmt = conn.createStatement();
  110.       rs = stmt.executeQuery( "SELECT sybase.sql.ASAUtils.toByteArray( jdba.Product.JProd ) FROM jdba.Product" );
  111.       
  112.       while ( rs.next() ) {
  113.     arrayb = rs.getBytes(1);
  114.     o = (java.lang.Object)sybase.sql.ASAUtils.fromByteArray( arrayb );
  115.     strClassname = (o.getClass()).getName();
  116.     
  117.     if ( strClassname.equals( "asademo.Product") ) {
  118.       product = (asademo.Product)o;
  119.       System.out.println( "This is a product: " + product.name );
  120.     } else if ( strClassname.equals( "asademo.Hat" ) ) {
  121.       hat = (asademo.Hat)o;
  122.       System.out.println( "The size of this hat is: " + hat.size );
  123.     }
  124.       }
  125.     }
  126.   }
  127.   
  128.   ///////////////////////////////////////////////
  129.   //    Connect to an Apaptive Server Anywhere 
  130.   //    database server
  131.   ///////////////////////////////////////////////
  132.   private static void ASAConnect( String UserID, 
  133.                   String Password, 
  134.                   String Machinename ) {
  135.     // uses global Connection variable
  136.     
  137.     String _coninfo = new String( Machinename );
  138.     
  139.     Properties _props = new Properties();
  140.     _props.put( "user", UserID );
  141.     _props.put( "password", Password );
  142.     
  143.     // Load the Sybase Driver
  144.     try {
  145.       Class.forName( "com.sybase.jdbc.SybDriver" ).newInstance();
  146.       
  147.       StringBuffer temp = new StringBuffer();
  148.       // Use the Sybase jConnect driver...
  149.       temp.append( "jdbc:sybase:Tds:" ); 
  150.       // to connect to the supplied machine name...
  151.       temp.append( _coninfo );
  152.       // on the default port number for ASA...
  153.       temp.append( ":2638" );
  154.       // and connect.
  155.       System.out.println( temp.toString() );
  156.       conn = DriverManager.getConnection( temp.toString() , _props );
  157.     }
  158.     catch ( Exception e ) {
  159.       System.out.println( "Error: " + e.getMessage() );
  160.       e.printStackTrace();
  161.     }   
  162.   }
  163.   
  164.   public static void InternalConnect() {
  165.     try {
  166.       conn = DriverManager.getConnection("");
  167.       System.out.println("Hello World");
  168.     }
  169.     catch ( Exception e ) {
  170.       System.out.println("Error: " + e.getMessage());
  171.       e.printStackTrace();
  172.     }
  173.   }
  174.  
  175.   public static void InsertFixed() throws SQLException {  
  176.     // returns current connection
  177.     conn = DriverManager.getConnection("");
  178.     // Disable autocommit
  179.     conn.setAutoCommit( false );
  180.     
  181.     Statement stmt = conn.createStatement();
  182.     
  183.     Integer IRows = new Integer( stmt.executeUpdate
  184.        ("INSERT INTO Department (dept_id, dept_name )"
  185.         + "VALUES (201, 'Eastern Sales')" 
  186.          ) );
  187.     
  188.     // Print the number of rows updated
  189.     System.out.println(IRows.toString() + " row inserted" );
  190.   }
  191.   
  192.   public static void DeleteFixed()  {  
  193.     try {
  194.       // returns current connection
  195.       conn = DriverManager.getConnection("");
  196.       // Disable autocommit
  197.       conn.setAutoCommit( false );
  198.       Statement stmt = conn.createStatement();
  199.       
  200.       String  sqlStr = "DELETE FROM Department "
  201.     + "WHERE dept_id BETWEEN 201 and 299" ;
  202.       
  203.       Integer IRows = new Integer( stmt.executeUpdate( sqlStr ) );
  204.  
  205.       // Print the number of rows updated
  206.       System.out.println(IRows.toString() + " row deleted" );
  207.  
  208.     }
  209.     catch ( Exception e ) {
  210.       System.out.println("Error: " + e.getMessage());
  211.       e.printStackTrace();
  212.     }
  213.   }
  214.  
  215.   public static void InsertArguments(String id, String name)  {
  216.     try {
  217.       conn = DriverManager.getConnection("");
  218.       // Disable autocommit
  219.       conn.setAutoCommit( false );
  220.  
  221.       // Build the INSERT statement
  222.       String sqlStr =  "INSERT INTO Department "
  223.     + " ( dept_id, dept_name )"
  224.     + " VALUES (" +  id +  ", '"  + name + "')";
  225.  
  226.       // Execute the statement
  227.       Statement stmt = conn.createStatement();
  228.       Integer IRows = new Integer( stmt.executeUpdate( sqlStr.toString() ) );
  229.  
  230.       // Print the number of rows updated
  231.       System.out.println(IRows.toString() + " row inserted" );
  232.     }
  233.     catch ( Exception e ) {
  234.       System.out.println("Error: " + e.getMessage());
  235.       e.printStackTrace();
  236.     }
  237.   }
  238.  
  239.   public static void InsertPrepared(int id, String name)  {
  240.     try {
  241.       conn = DriverManager.getConnection("");
  242.       // Disable autocommit
  243.       conn.setAutoCommit( false );
  244.  
  245.       // Build the INSERT statement 
  246.       // ? is a placeholder character
  247.       String sqlStr = "INSERT INTO Department "
  248.     + "( dept_id, dept_name ) "
  249.     + "VALUES ( ? , ? )" ;
  250.  
  251.       // Prepare the statement
  252.       PreparedStatement stmt = conn.prepareStatement( sqlStr );
  253.       
  254.       stmt.setInt(1, id);
  255.       stmt.setString(2, name );
  256.       Integer IRows = new Integer( stmt.executeUpdate() );
  257.  
  258.       // Print the number of rows updated
  259.       System.out.println(IRows.toString() + " row inserted" );
  260.     }
  261.     catch ( Exception e ) {
  262.       System.out.println("Error: " + e.getMessage());
  263.       e.printStackTrace();
  264.     }
  265.   }
  266.  
  267.   public static int Query () {
  268.     int max_price = 0;
  269.     try{
  270.       conn = DriverManager.getConnection( "" );
  271.  
  272.       // Build the query
  273.       String sqlStr =  "SELECT id, unit_price "
  274.     + "FROM product" ;
  275.  
  276.       // Execute the statement
  277.       Statement stmt = conn.createStatement();
  278.       ResultSet result = stmt.executeQuery( sqlStr );
  279.  
  280.       while( result.next() ) {
  281.     int price = result.getInt(2);
  282.     System.out.println( "Price is "  + price );
  283.     if( price > max_price ) {
  284.       max_price = price ;
  285.     }
  286.       }
  287.     }
  288.     catch( Exception e ) {
  289.       System.out.println("Error: " + e.getMessage());
  290.       e.printStackTrace();
  291.     }
  292.       return max_price;
  293.   }
  294. }
  295.  
  296.  
  297.  
  298.