Greeting! I am trying to convert an application from a DB2 based 
program to MySQL. We are still evaluating MySQL and learning. 
We are using Java and the JDBC driver mm.mysql.jdbc-1.2c to 
create the database. The Java version of this program using this 
driver is not creating some of the tables. The errors indicate a 
syntax problem in the prepare statement in the Java code. The 
original code ran on OS/2 and the sql was embedded something 
similar to the following sample:  

   EXEC SQL CREATE TABLE Patient_Info_Table
      (medical_record_#            CHAR(16)     NOT NULL PRIMARY 
KEY,
       date_of_birth               CHAR(10)     NOT NULL,
       patient_name                CHAR(48)     NOT NULL,
       addr_line_one               CHAR(48),
       addr_line_two               CHAR(48),
       city                        CHAR(24),
       state                       CHAR(2),
       country_code                CHAR(3),
       zip_code                    CHAR(10),
       telephone                   CHAR(48),
       t_and_d_stamp               TIMESTAMP,
       comments                    CHAR(128),
       previous_addr               INTEGER,
       guardian_info               INTEGER,
       emergency_info              INTEGER,
       total_hpps                  INTEGER,
       supp_data                   INTEGER,
       appt_time                   TIME,
       appt_date                   DATE,
       appt_location               CHAR(48),
       office_code                 CHAR(16),
       fsdstatus_flag              INTEGER,
       galaxy                      VARCHAR(512)
       );


This was rewritten in Java so that all tables for the application could 
be created and static data inserted for a customer. The Java 
program was tested on OS/2 and Windows some years ago using 
a driver from IBM and the DB2 product. The sample Java code to 
create the above table follows:  

import COM.ibm.db2.app.*;
import COM.ibm.db2.jdbc.app.*;
import java.util.*;
import java.text.*;
import java.io.*;
import java.sql.*;
import java.sql.Types.*;

public class CreateDB
   {
   public PreparedStatement createPITStmt;      /* 
Patient_Info_Table */


   public CreateDB()
      {

      try
         {  // lines below deliberately wrapped for this E-mail
         createPITStmt = con.prepareStatement(

"CREATE TABLE Patient_Info_TABLE (
medical_record_# CHAR(16) NOT NULL PRIMARY 
KEY,date_of_birth CHAR(10) NOT NULL, patient_name CHAR(48) 
NOT NULL,addr_line_one CHAR(48), addr_line_two CHAR(48),city 
CHAR(24),state CHAR(2), country_code CHAR(3),zip_code 
CHAR(10),telephone CHAR(48), t_and_d_stamp 
TIMESTAMP,comments CHAR(128),previous_addr
INTEGER,guardian_info INTEGER,emergency_info 
INTEGER,total_hpps INTEGER,supp_data INTEGER,appt_time 
TIME,appt_date DATE, appt_location CHAR(48),office_code 
CHAR(16),fsdstatus_flag INTEGER, galaxy VARCHAR(512))"  );

         System.out.println("Try Creating Patient_Info_Table.");

         createPITStmt.executeUpdate();

         SQLWarning warning = createPITStmt.getWarnings();
         if ( warning != null )
            {
            System.out.println("Message:  " + warning.getMessage());
            System.out.println("SQLState:  " + warning.getSQLState());
            System.out.println("ErrorCode:  " + 
warning.getErrorCode());
            }

         createPITStmt.close();
         System.out.println("Patient_Info_Table creation successful.");

         }catch( SQLException e ) {
            System.out.println("Creation of Patient_Info_Table failed.");
            System.out.println("Message:  " + e.getMessage() );
            System.out.println("SQLState:  " + e.getSQLState() );
            System.out.println("ErrorCode:  " + e.getErrorCode() );
         }

      }
 
   public static void main(String argv[])
   {
      .
      .
      
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();
      .
      .
      String url = "jdbc:db2:PEDSHPP";
      .
      .
      con = DriverManager.getConnection(url);
      .
      .
      CreateDB tc = new CreateDB();
   }

The test program above ran perfectly and created the table on 
Win9x/NT/W2K on the DB2 installation. We modified the test 
program by commenting out the IBM specific import directives. 
And, of course changed/used the following:  

      Class.forName("org.gjt.mm.mysql.Driver").newInstance();

      String url = "jdbc:mysql://localhost/PEDSHPP";

This was nothing fancy as far as MySQL installed as a standalone 
workstation configuration. Is my problem with some of the data 
types? If so, any comments would be appreciated with regard to 
interpretation of the definition of creating tables. The following 
output was captured from a Win2000 system:  

Try Creating Patient_Info_Table.
Creation of Patient_Info_Table failed.
Message:  Error during query: Unexpected Exception: 
java.sql.SQLException
message given: Syntax error or access violation: You have an error 
in your
SQL syntax near '' at line 1
SQLState:  S1000
ErrorCode:  0

If the definitions for creating a table in MySQL are such that there 
is a basic compliance with Entry level SQL92. ODBC levels 0-2 
one would think that the con.prepareStatement parameters would 
not have to change. That leaves the JDBC driver. TIA for the assist.

Regards,

John Wubbel
John Wubbel Consultancy
[EMAIL PROTECTED]

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to