If I'm reading this correctly, you're putting single-quote delimiters
around the REAL value:

insertQuery = "INSERT INTO salariedWorkers VALUES ( '" +
              socialSecurityNumber + "', '" + weeklySalary + "', '0' )";

MySQL would accept that, but Derby is a lot stricter. Drop the
single-quotes if you want to stick with the concatenated string
approach to creating an SQL statement -- but better yet, use a
prepared statement with parameter markers, something like:

PreparedStatement insertQuery = con.prepareStatement("INSERT INTO
salariedWorkers VALUES ( ?, ?, ?)");
insertQuery.setString(1, socialSecurityNumber);
insertQuery.setFloat(2, salary);
insertQuery.setFloat(3, 0);
insertQuery.executeUpdate();

(might need to adjust the data types slightly here, but you get the idea)

Dan

On 13/12/06, William B. <[EMAIL PROTECTED]> wrote:
I keep receiving the error message above when I try to add a salary. Please
help

import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Workers extends JFrame {
   private Connection connection;
   private Statement statement;
   private ResultSet resultSet;
   private ResultSetMetaData rsMetaData;
   private Container container;
   private JTable table;
   private JTextField input;
   private JButton addSalariedWorker, addCommissionWorker,
      addBasePlusCommissionWorker, addHourlyWorker;
   // constructor Workers
   public Workers()
   {
      super( "Add Staff Members" );
      // The URL specifying the workers database to which this program
      // connects to using JDBC

      String url = "jdbc:derby:workers";
      // Load the driver to allow connection to the database
      try {
         Class.forName(
"org.apache.derby.jdbc.EmbeddedDriver" );
         connection = DriverManager.getConnection( url );
      }
      catch ( ClassNotFoundException cnfex ) {
         System.err.println( "Failed to load JDBC driver." );
         cnfex.printStackTrace();
         System.exit( 1 );  // terminate program
      }
      catch ( SQLException sqlex ) {
         System.err.println( "Unable to connect" );
         sqlex.printStackTrace();
         System.exit( 1 );  // terminate program
      }
      // if connected to database, set up GUI
      JPanel topPanel = new JPanel();
      topPanel.setLayout( new FlowLayout() );
      topPanel.add( new JLabel( "Enter query to insert workers:" ) );
      input = new JTextField( 50 );
      topPanel.add( input );
      input.addActionListener(
         new ActionListener() {

            public void actionPerformed( ActionEvent e )
            {
               addWorker( input.getText() );
            }
         }
      );
      // create four buttons that allow user to add specific employee
      JPanel centerPanel = new JPanel();
      centerPanel.setLayout( new FlowLayout() );

      addSalariedWorker = new JButton( "Add Salaried Worker" );
      addSalariedWorker.addActionListener( new
ButtonHandler() );
      addCommissionWorker = new JButton( "Add Commission Worker" );
      addCommissionWorker.addActionListener( new
ButtonHandler() );
      addBasePlusCommissionWorker =
         new JButton( "Add Base Plus Commission Worker" );
      addBasePlusCommissionWorker.addActionListener(
         new ButtonHandler() );
      addHourlyWorker = new JButton( "Add Hourly Worker" );
      addHourlyWorker.addActionListener( new
ButtonHandler() );
      // add four buttons to centerPanel
      centerPanel.add( addSalariedWorker );
      centerPanel.add( addCommissionWorker );
      centerPanel.add( addBasePlusCommissionWorker );
      centerPanel.add( addHourlyWorker );
      JPanel inputPanel = new JPanel();
      inputPanel.setLayout( new BorderLayout() );
      inputPanel.add( topPanel, BorderLayout.NORTH );
      inputPanel.add( centerPanel, BorderLayout.CENTER );
      table = new JTable( 4, 4 );
      container = getContentPane();
      container.setLayout( new BorderLayout() );
      container.add( inputPanel, BorderLayout.NORTH );
      container.add( table, BorderLayout.CENTER );
      getTable();
      setSize( 800, 300 );
      setVisible( true );
   } // end constructor Workers
   private void getTable()
   {
      try {
         statement = connection.createStatement();
         resultSet = statement.executeQuery( "SELECT * FROM workers" );

         displayResultSet( resultSet );
      }
      catch ( SQLException sqlex ) {
         sqlex.printStackTrace();
      }
   }
   private void addWorker( String query )
   {
      try {
         statement = connection.createStatement();
         statement.executeUpdate( query );
         getTable();
      }
      catch ( SQLException sqlex ) {
         sqlex.printStackTrace();
      }
   }
   private void displayResultSet( ResultSet rs ) throws SQLException
   {
      // position to first record
      boolean moreRecords = rs.next();
      // if there are no records, display a message
      if ( !moreRecords ) {
         JOptionPane.showMessageDialog( this,
            "ResultSet contained no records" );
         return;
      }
      Vector<Object> columnHeads = new Vector<Object>();
      Vector<Object> rows = new Vector<Object>();
      try {
         // get column heads
         ResultSetMetaData rsmd = rs.getMetaData();

         for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
            columnHeads.addElement( rsmd.getColumnName( i ) );
         // get row data
         do {
            rows.addElement( getNextRow( rs, rsmd ) );
         } while ( rs.next() );
         // display table with ResultSet contents
         table = new JTable( rows, columnHeads );
         JScrollPane scroller = new JScrollPane( table );
         container.remove( 1 );
         container.add( scroller, BorderLayout.CENTER );
         container.validate();
      } // end try
      catch ( SQLException sqlex ) {
         sqlex.printStackTrace();
      }
   } // end method displayResultSet
   private Vector getNextRow( ResultSet rs,
      ResultSetMetaData rsmd ) throws SQLException
   {
      Vector<Object> currentRow = new Vector<Object>();

      for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
         switch( rsmd.getColumnType( i ) ) {
            case Types.VARCHAR:
            case Types.LONGVARCHAR:
               currentRow.addElement( rs.getString( i ) );
               break;
            case Types.INTEGER:
               currentRow.addElement( new Long( rs.getLong( i ) ) );
               break;
            case Types.REAL:
               currentRow.addElement( new Float( rs.getDouble( i ) ) );
               break;
            case Types.DATE:
               currentRow.addElement( rs.getDate( i ) );
               break;
            default:
               System.out.println( "Type was: " +
                  rsmd.getColumnTypeName( i ) );
         }

      return currentRow;
   } // end method getNextRow
   public void shutDown()
   {
      try {
         connection.close();
      }
      catch ( SQLException sqlex ) {
         System.err.println( "Unable to disconnect" );
         sqlex.printStackTrace();
      }
   }
   public static void main(String[] args)
   {
      final Workers application = new Workers();
      application.addWindowListener(
         new WindowAdapter() {
            public void windowClosing( WindowEvent e )
            {
               application.shutDown();
               System.exit( 0 );
            }
         }
      );
   }

   // inner class ButtonHandler handles button event
   private class ButtonHandler implements ActionListener {
      public void actionPerformed( ActionEvent event )
      {
         String socialSecurityNumber = JOptionPane.showInputDialog(
            "Employee Social Security Number" );
         String insertQuery = "", displayQuery = "";
         // add salaried employee to table salariedWorkers
         if ( event.getSource() == addSalariedWorker ) {
            double weeklySalary = Double.parseDouble(
               JOptionPane.showInputDialog( "Weekly Salary:" ) );
            insertQuery = "INSERT INTO salariedWorkers VALUES ( '" +
               socialSecurityNumber + "', '" + weeklySalary + "', '0' )";
            displayQuery = "SELECT workers.socialSecurityNumber, " +
               "workers.firstName, workers.lastName, " +
               "workers.employeeType, salariedWorkers.weeklySalary" +
               " FROM workers, salariedWorkers WHERE " +
               "workers.socialSecurityNumber = " +
               "salariedWorkers.socialSecurityNumber";
         }
         // add commission employee to table commissionWorker
         else if ( event.getSource() == addCommissionWorker ) {
            int grossSales = Integer.parseInt(
               JOptionPane.showInputDialog( "Gross Sales:" ) );
            double commissionRate = Double.parseDouble(
               JOptionPane.showInputDialog( "Commission Rate:" ) );
            insertQuery = "INSERT INTO commissionWorkers VALUES ( '" +
               socialSecurityNumber + "', '" + grossSales + "', '" +
               commissionRate + "', '0' )";
            displayQuery = "SELECT workers.socialSecurityNumber, " +
               "workers.firstName, workers.lastName, " +
               "workers.employeeType, commissionWorkers.grossSales," +
               " commissionWorkers.commissionRate FROM
workers, " +
               "commissionWorkers WHERE workers.socialSecurityNumber="
               + "commissionWorkers.socialSecurityNumber";
         }
         // add base plus commission employee to table
         // basePlusCommissionEmployee
         else if ( event.getSource() == addBasePlusCommissionWorker ) {
            int grossSales = Integer.parseInt(
               JOptionPane.showInputDialog( "Gross Sales:" ) );
            double commissionRate = Double.parseDouble(
               JOptionPane.showInputDialog( "Commission Rate:" ) );
            double baseSalary = Double.parseDouble(
               JOptionPane.showInputDialog( "Base Salary:" ) );
            insertQuery = "INSERT INTO basePlusCommissionWorkers " +
               "VALUES ( '" + socialSecurityNumber + "', '" + grossSales +
               "', '" + commissionRate + "', '" + baseSalary + "', '0' )";
            displayQuery = "SELECT workers.socialSecurityNumber, " +
               "workers.firstName, workers.lastName, workers." +
               "employeeType,
basePlusCommissionWorkers.baseSalary, " +
               "basePlusCommissionWorkers.grossSales,
basePlus" +
               "CommissionWorkers.commissionRate FROM
workers, " +
               "basePlusCommissionWorkers WHERE " +
               "workers.socialSecurityNumber = " +

"basePlusCommissionWorkers.socialSecurityNumber";
         }
         // add hourly employee to table hourlyEmployee
         else {
            int hours = Integer.parseInt(
               JOptionPane.showInputDialog( "Hours:" ) );
            double wage = Double.parseDouble(
               JOptionPane.showInputDialog( "Wage:" ) );
            insertQuery = "INSERT INTO hourlyWorkers VALUES ( '" +
               socialSecurityNumber + "', '" + hours + "', '" + wage +
               "', '0' )";
            displayQuery = "SELECT workers.socialSecurityNumber, " +
               "workers.firstName, workers.lastName, " +
               "workers.employeeType, hourlyWorkers.hours, " +
               "hourlyWorkers.wage FROM workers, hourlyWorkers " +
               "WHERE workers.socialSecurityNumber = " +
               "hourlyWorkers.socialSecurityNumber";
         }
         // execute insert query and display employee info
         try {
            statement = connection.createStatement();
            statement.executeUpdate( insertQuery );

            // display the employee info
            statement = connection.createStatement();
            resultSet = statement.executeQuery( displayQuery );
            displayResultSet( resultSet );
         }
         catch ( SQLException exception ) {
            exception.printStackTrace();
   }

      } // end method actionPerformed
   } // end inner class ButtonHandler
} // end class Workers


SQL file
connect 'jdbc:derby:workers;create=true'
;
drop table workers
;
drop table salariedWorkers
;
drop table commissionWorkers
;
drop table basePlusCommissionWorkers
;
drop table hourlyWorkers
;
create table workers (
 socialSecurityNumber varchar (30) NOT NULL,
 firstName varchar (30) NOT NULL,
 lastName varchar (30) NOT NULL,
        birthday date NOT NULL,
 employeeType varchar (30) NOT NULL,
 departmentName varchar (30) NOT NULL,
 constraint pk_workers primary key (socialSecurityNumber)
)
;
create table salariedWorkers (
 socialsecurityNumber varchar (30) NOT NULL,
 weeklySalary real NOT NULL,
 bonus real,
 constraint fk_salariedWorkers foreign key (socialSecurityNumber)
  references workers (socialSecurityNumber)
)
;
create table commissionWorkers (
 socialSecurityNumber varchar (30) NOT NULL,
 grossSales int NOT NULL,
 commissionRate real NOT NULL,
 bonus real,
 constraint fk_commissionWorkers foreign key (socialSecurityNumber)
  references workers (socialSecurityNumber)
)
;
create table basePlusCommissionWorkers (
 socialSecurityNumber varchar (30) NOT NULL,
 grossSales int NOT NULL,
 commissionRate real NOT NULL,
 baseSalary real NOT NULL,
 bonus real,
 constraint fk_basePlusCommissionWorkers foreign key (socialSecurityNumber)
  references workers (socialSecurityNumber)
)
;
create table hourlyWorkers (
 socialSecurityNumber varchar (30) NOT NULL,
 hours int NOT NULL,
 wage real NOT NULL,
 bonus real,
 constraint fk_hourlyWorkers foreign key (socialSecurityNumber)
  references workers (socialSecurityNumber)
)
;





 ________________________________
Want to start your own business? Learn how on Yahoo! Small Business.


Reply via email to