Zapytanie SQL po naciśnięciu klawisza

0

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)

0

1sza sprawa to:

...executeQuery("insert into samochod values (marka, model, minspal, maxspal, trasa, czesci)");

musisz to przekazać przez '?'

("insert into samochod values (?, ?, ?, ?, ?, ?)");

smt.setString(1, marka);
smt.setString(2, model);
...

1 użytkowników online, w tym zalogowanych: 0, gości: 1