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

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

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

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

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

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

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 ();
             }
          }
       }