CHAPTER 5: サンプルプログラム




このチャプターで提供されている例は myTableテーブルを作成し、 3レコードを登録し、 それらを検索するアプリケーションを示しています。

例のmyDemo.javaを実行するためには 以下のステップを行ってください。

  1. myDemo.javaEmpress コネクティビティ ( ODBC) サーバー上の Empressデータベースをアクセスするクライアントアプリケーションです。 ユーザーはmyDemo.javaにしたがってgetConnectionパラメータを 修正しなければなりません。 例えば:

       "jdbc:empress://SERVER=workstn1;PORT=6322;DATABASE=testdb",
          "joe", "code123"
    
    

    このgetConnectionパラメータはEmpress ODBC サーバーが起動されている マシンとしてworkstn1を示しています。 6322 はこのサーバーのポート番号です。 testdb はサーバーによってアクセス可能なサーバー上の Empressデータベースの位置です。 joecode123Empress サーバー パスワード ファイルに存在する クライアントログイン名とパスワードアカウントです。

  2. サンプルコードをコンパイルします。Java コンパイラでコンパイルしなければなりません。

       javac myDemo.java
    
    

    このコマンドでmyDemo.classは作成されます。

  3. 作成されたmyDemo.classを実行します。Java インタプリタで実行しなければなりません。 例えば:

       java myDemo
    
    

以下はmyDemo.javaコードです。


   import java.sql.*;
   
   public class myDemo
   {
      private static Connection      TheConnection;
      private static Statement       SqlHandle;
      private static ResultSet       Results;
      private static ResultSetMetaData MResults;
    
      public static void main (String args[])
      {
         int count;
         int num_attrs;
         String name;
         String type_name;
         int type;
    
         try
         {
            Class.forName ("empress.jdbc.empressDriver");
    
            TheConnection = DriverManager.getConnection (
               "jdbc:empress://SERVER=emery;PORT=6322;DATABASE=testdb",
               "joe", "code123");
   
            SqlHandle = TheConnection.createStatement ();
   
            SqlHandle.executeUpdate("CREATE myTable (a char,
               b double precision, c date)");
   
            SqlHandle.executeUpdate("INSERT INTO myTable VALUES 
               ('blue', 2.34, 19980213)");

            SqlHandle.executeUpdate("INSERT INTO myTable VALUES 
               ('red', 3.45, 19980214)");

            SqlHandle.executeUpdate("INSERT INTO myTable VALUES 
               ('green', 4.56, 19980215)");
   
            Results = SqlHandle.executeQuery ("SELECT * FROM myTable");
            MResults = Results.getMetaData ();
   
            num_attrs = MResults.getColumnCount ();
    
            while (Results.next () == true)
            {
               for (count=1; count<=num_attrs; count++)
               {
                  name = MResults.getColumnName (count);
                  type = MResults.getColumnType (count);
                  type_name = MResults.getColumnTypeName (count);
                  System.out.print (name+"["+type_name+"]["+
                                    MResults.getPrecision (count)+"]["+
                                    MResults.getScale(count)+"]["+
                                    MResults.isNullable (count)+"]: ");
    
                  switch (type)
                  {
                     case Types.DOUBLE:
                        System.out.println ("(double)" +
                           Results.getDouble (count));
                        break;
                     case Types.DATE:
                        System.out.println ("(date)" +
                           Results.getDate (count));
                        break;
                     default:
                        System.out.println ("(string)" +
                           Results.getString (count));
                        break;
                   }
               }
            }
         } 
         catch (SQLException ex)
         {
            SQLException eptr;
            for (eptr = ex; eptr != null; eptr = eptr.getNextException())
            {
               System.out.println ("Message: "+eptr.getMessage());
            }
            ex.printStackTrace ();
         }
         catch (Exception other)
         {
            other.printStackTrace ();
         }
      }
   }