Napisałem okno, w którym podaje się wartości "Samochód", a następnie po wciśnięciu klawisza miało zostać wysłane zapytanie do bazy danych. W teorii nic trudnego, z praktyką jak zwykle gorzej. Oto kod :
package layout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.*;
import db.*;
public class dodajSamochod extends JFrame {
private static JTextField addMarka;
private static JTextField addModel;
private static JTextField addMinSpalanieMiasto;
private static JTextField addMaxSpalanieMiasto;
private static JTextField addSpalanieTrasa;
private static JTextField addCzesci;
private JLabel dodajMarka, dodajModel, dodajMinSpalanieMiasto,
dodajMaxSpalanieMiasto, dodajSpalanieTrasa, dodajCzesci;
private JButton button;
private Samochod sam;
static String marka;
static String model;
static double minspal;
static double maxspal;
static double trasa;
static int czesci;
public dodajSamochod() {
setTitle("Dodaj samochod do bazy");
setBounds(500, 310, 500, 300);
setVisible(true);
setResizable(false);
setLayout(null);
dodajMarka = new JLabel("Podaj markę:");
dodajMarka.setBounds(10, 20, 80, 20);
dodajMarka.setBorder(BorderFactory.createEtchedBorder());
add(dodajMarka);
dodajModel = new JLabel("Podaj model:");
dodajModel.setBounds(10, 60, 80, 20);
dodajModel.setBorder(BorderFactory.createEtchedBorder());
add(dodajModel);
dodajMinSpalanieMiasto = new JLabel("Min. spalanie w miescie:");
dodajMinSpalanieMiasto.setBounds(10, 100, 180, 20);
dodajMinSpalanieMiasto.setBorder(BorderFactory.createEtchedBorder());
add(dodajMinSpalanieMiasto);
dodajMaxSpalanieMiasto = new JLabel("Max. spalanie w miescie:");
dodajMaxSpalanieMiasto.setBounds(10, 140, 180, 20);
dodajMaxSpalanieMiasto.setBorder(BorderFactory.createEtchedBorder());
add(dodajMaxSpalanieMiasto);
dodajSpalanieTrasa = new JLabel("Spalanie w trasie:");
dodajSpalanieTrasa.setBounds(10, 180, 180, 20);
dodajSpalanieTrasa.setBorder(BorderFactory.createEtchedBorder());
add(dodajSpalanieTrasa);
dodajCzesci = new JLabel("Kosztowność czesci [1-10]:");
dodajCzesci.setBounds(10, 220, 180, 20);
dodajCzesci.setBorder(BorderFactory.createEtchedBorder());
add(dodajCzesci);
addMarka = new JTextField();
addMarka.setBounds(220, 20, 110, 20);
addMarka.setBorder(BorderFactory.createEtchedBorder());
add(addMarka);
addModel = new JTextField();
addModel.setBounds(220, 60, 110, 20);
addModel.setBorder(BorderFactory.createEtchedBorder());
add(addModel);
addMinSpalanieMiasto = new JTextField();
addMinSpalanieMiasto.setBounds(220, 100, 40, 20);
addMinSpalanieMiasto.setBorder(BorderFactory.createEtchedBorder());
add(addMinSpalanieMiasto);
addMaxSpalanieMiasto = new JTextField();
addMaxSpalanieMiasto.setBounds(220, 140, 40, 20);
addMaxSpalanieMiasto.setBorder(BorderFactory.createEtchedBorder());
add(addMaxSpalanieMiasto);
addSpalanieTrasa = new JTextField();
addSpalanieTrasa.setBounds(220, 180, 40, 20);
addSpalanieTrasa.setBorder(BorderFactory.createEtchedBorder());
add(addSpalanieTrasa);
addCzesci = new JTextField();
addCzesci.setBounds(220, 220, 40, 20);
addCzesci.setBorder(BorderFactory.createEtchedBorder());
add(addCzesci);
button = new JButton("Dodaj do bazy");
button.setBounds(300, 100, 150, 150);
add(button);
button.addActionListener(new buttonDodajSamochod());
}
static void polacz() {
marka = addMarka.getText();
model = addModel.getText();
minspal = Double.parseDouble(addMinSpalanieMiasto.getText());
maxspal = Double.parseDouble(addMaxSpalanieMiasto.getText());
trasa = Double.parseDouble(addSpalanieTrasa.getText());
czesci = Integer.parseInt(addCzesci.getText());
}
static class buttonDodajSamochod implements ActionListener {
public void actionPerformed(ActionEvent e) {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = null;
con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/utrzymanie_samochodu",
"root", "kwiatek");
java.sql.Statement st = null;
st = con.createStatement();
dodajSamochod.polacz();
ResultSet rs = st
.executeQuery("insert into samochod values (marka, model, minspal, maxspal, trasa, czesci)");
} catch (SQLException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
}
}
}
Kompiluje się OK, po kliknięciu klawisza wyskakuję błędy:
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:436)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1390)
at layout.dodajSamochod$buttonDodajSamochod.actionPerformed(dodajSamochod.java:119)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)