I am trying to write a new record to two database tables called item and provider .
I have a class that handles a database connection and SQL statements. I use a large form in the ItemEntryScreen class, where I use the following:
private void writeItemRecord()
{
if ( DataBaseHandler.makeConnectionTofireplaceDB() == -1)
{
JOptionPane.showMessageDialog (frame, "Unable to connect to database table (Item)");
}
else
{
String suppliercode = suppliercodeTxtField.getText();
String suppliername = suppliernameTxtField.getText();
String address = addressTxtField.getText();
Item item = new Item();
item.setSuppliercode(suppliercode);
item.setSuppliername(suppliername);
item.setAddress(address);
int error = DataBaseHandler.writeTosupplierTable(item.getSuppliercode(),item.getSuppliername(),item.getAddress());
if (error == -1)
{
JOptionPane.showMessageDialog (frame, "Problem writing record to Item Table");
}
clearForm();
if ( DataBaseHandler.closeConnection() == -1 )
{
JOptionPane.showMessageDialog (frame, "Problem closing data base conection");
}
}
}
private void writesupplierRecord()
{
if ( DataBaseHandler.makeConnectionTofireplaceDB() == -1)
{
JOptionPane.showMessageDialog (frame, "Unable to connect to database table (Item)");
}
else
{
String itemname = itemnameTxtField.getText();
String itemcode = itemcodeTxtField.getText();
String description = descriptionTxtField.getText();
String unitprice = unitpriceTxtField.getText();
String style = styleTxtField.getText();
String finish = finishTxtField.getText();
String stock = stockTxtField.getText();
Float fvar = Float.valueOf(unitprice);
float newprice = fvar.floatValue();
Float svar = Float.valueOf(stock);
float newstock = svar.floatValue();
Item item = new Item();
item.setItemname (itemname);
item.setItemcode (itemcode);
item.setDescription (description);
item.setUnitprice (newprice);
item.setStock(newstock);
item.setStyle(style);
item.setFinish(finish);
int error = DataBaseHandler.writeToitemTable(item.getItemname(),
item.getItemcode(),
item.getDescription(),
item.getUnitprice(),
item.getStock(),
item.getStyle(),
item.getFinish()
);
if (error == -1)
{
JOptionPane.showMessageDialog (frame, "Problem writing record to Item Table");
}
clearForm();
if ( DataBaseHandler.closeConnection() == -1 )
{
JOptionPane.showMessageDialog (frame, "Problem closing data base conection");
}
}
}
The above code compiles!
static public int writeToitemTable(String itemnameIn, String itemcodeIn, String descriptionIn,
float unitpriceIn, float stockIn, String styleIn, String finishIn)
{
String SQLString;
SQLString = "INSERT INTO item VALUES ('" + itemcodeIn + "','" + itemnameIn + "','" + descriptionIn + "','" + unitpriceIn + "','"
+ stockIn + "','" + styleIn + "','" + finishIn + "')";
try
{
statement = connectionTofireplaceDB.createStatement();
statement.executeUpdate (SQLString);
}
catch (SQLException exception)
{
return (-1);
}
return (0);
}
static public int writeTosupplierTable(String suppliernameIn, String suppliercodeIn, String addressIn)
{
String SQLString;
SQLString = "INSERT INTO supplier VALUES ('" + suppliernameIn + "','" + suppliercodeIn + "','" + addressIn + "')";
try
{
statement = connectionTofireplaceDB.createStatement();
statement.executeUpdate (SQLString);
}
catch (SQLException exception)
{
return (-1);
}
return (0);
}
When I enter the data into the form and click the submit button, I get a return value of -1, which leads to the display of a message box saying that there was a problem writing to the database. Why?
Update
These are the error messages I can get:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at ItemEntryScreen.writeItemRecord(ItemEntryScreen.java:392)
at ItemEntryScreen.actionPerformed(ItemEntryScreen.java:348)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)