PrepareStatement "Insert into" fehlermeldung

Status
Nicht offen für weitere Antworten.

butalive

Mitglied
hallo leider brauch ich schon wieder hilfe!
hab eine methode geschrieben, die das übergebene object in die db schreiben soll.
Code:
public static boolean speichern(Artikel toSave, Connection con){
		try{			
			 PreparedStatement pstmt2 = con.prepareStatement(
					 "INSERT INTO ARTIKEL(ID,BEZEICHNUNG,PREIS)"+
				      "VALUES(?,?,?)");			
			pstmt2.setInt(1,toSave.getId());
			pstmt2.setString(2,toSave.getBezeichnung());
			pstmt2.setDouble(3,toSave.getPreis());			
			ResultSet rs = pstmt2.executeQuery(); 
			pstmt2.close();			
			rs.close();					
		}catch(Exception e){			
			System.out.print(e);
			return false;
		}		
		return true;
	}
FEHLERMELDUNG "java.sql.SQLException: Statement does not generate a result set";
danke im vorraus
 

mlux

Mitglied
hi .. versuch mal anstatt

Code:
ResultSet rs = pstmt2.executeQuery();

Code:
ResultSet rs = pstmt2.executeUpdate();

zu schreiben. ich denke, das wird der Fehler sein.
 

The_S

Top Contributor
das is genauso schwachsinnig. Einfach nur

Code:
pstmt2.executeUpdate();

oder

Code:
pstmt2.execute();

Du fügst ja was ein und bekommst insofern kein Ergebnis zurück.
 

butalive

Mitglied
ich bekomme jetzt zwar keine fehlermeldung, aber der datensatz wird nicht in die tabelle gespeichert.
lg martin
 

butalive

Mitglied
hier die methode
Code:
public static boolean speichern(Artikel toSave, Connection con){
		try{			
			 PreparedStatement pstmt4 = con.prepareStatement(
					 "INSERT INTO ARTIKEL VALUES(?,?,?)");				     
			pstmt4.setInt(1,toSave.getId());
			pstmt4.setString(2,toSave.getBezeichnung());
			pstmt4.setDouble(3,toSave.getPreis());				
			pstmt4.execute();		
			pstmt4.close();			
		}catch(Exception e){			
			System.out.print(e);
			return false;
		}		
		return true;
	}

und hier die ganze klasse.
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;

import org.omg.CORBA.ExceptionList;

import java.util.Iterator;


public class ArtikelDAO extends JPanel {	
	public static void main (String args[]){		
		double cheaper = 100.00;
		int finde = 3;
		Artikel toSave = new Artikel (15,"Tasche", 15.15);		
		Connection con = null;
		ArrayList ArtListe = new ArrayList();		
		//Treiber laden
		try{			
			//Treiber laden
			Class.forName("org.hsqldb.jdbcDriver");			
			System.out.println("Treiber erfolgreich geladen");			
			//Db verbindung aufbauen
			con = DriverManager.getConnection( "jdbc:hsqldb:file:I:/MeineHSQLDb", "sa", "" );
			System.out.println("Verbindung Aufgebaut");
			
			//Query			
			PreparedStatement pstmt = con.prepareStatement("SELECT* from ARTIKEL");			
			ResultSet rs = pstmt.executeQuery();
			
			//Liste mit Db einträgen füllen
			while (rs.next()){
				Artikel art = new Artikel();
				art.setId(rs.getInt("ID"));
				art.setBezeichnung(rs.getString("BEZEICHNUNG"));
				art.setPreis(rs.getDouble("PREIS"));
				ArtListe.add(art);
			}			
			
			//System.out.println(findebilliger(cheaper,con));			
			//System.out.println(finde(finde,ArtListe));
			System.out.println(ArtListe);
			if(speichern(toSave,con)){
				System.out.println("Speicher erfolgreich");
			}
			else{
				System.out.println("\t!!!Problem beim speichern!!!");
			}
			pstmt.close();			
			rs.close();				
			
		}catch (ClassNotFoundException e){
			e.printStackTrace();
		}catch (SQLException e){
			e.printStackTrace();
		}finally{
			if(con != null){
				try{
					con.close();
				}catch(SQLException e1){
					e1.printStackTrace();
				}
			}
		}
	}
	
	//Warum nur mit static
	public static Object finde(int finde,ArrayList ArtListe){
	      Iterator i = ArtListe.iterator();
	      try{
	         while(i.hasNext()){
	            Artikel p = (Artikel)i.next();           
	               if(finde == p.getId()){
	                  return p;
	               }
	         }     
	       return null;   
	      }
	      catch(Exception e){
	         System.err.print(e);
	         return null;
	      }     
	}	
	//Warum nur mit static
	public static List findebilliger(Double cheaper, Connection con){
		try{
			PreparedStatement pstmt2 = con.prepareStatement("SELECT* from ARTIKEL WHERE PREIS <= ?");			
			pstmt2.setDouble(1, cheaper);
			ResultSet rs2 = pstmt2.executeQuery();
			List ArtListe2 = new ArrayList();
			while (rs2.next()){
				Artikel art2 = new Artikel();
				art2.setId(rs2.getInt("ID"));
				art2.setBezeichnung(rs2.getString("BEZEICHNUNG"));
				art2.setPreis(rs2.getDouble("PREIS"));
				ArtListe2.add(art2);
			}
			pstmt2.close();			
			rs2.close();			
			return ArtListe2;
		}catch(Exception e){			
			System.out.print(e);
		}		
		return null;		
	}
 

J.C.

Mitglied
Mich wunderts dass du keine SQL Exception bekommst: INSERT INTO "Tabellen_Name" ("Spalte1", "Spalte2", ...)
VALUES ("Wert1", "Wert2", ...)

so ist es richtig
 

butalive

Mitglied
hoppla natürlich meine methode so ausgesehn , hatte sie nur zum testen geändert.
war aber ja auch die flasche art.
dennoch bekomm ich die werte noch immer nicht in die db.
Code:
public static boolean speichern(Artikel toSave, Connection con){
		try{			
			 PreparedStatement pstmt4 = con.prepareStatement("INSERT INTO ARTIKEL(ID,BEZEICHNUNG,PREIS)"+
                  "VALUES(?,?,?)"); 					 				     
			pstmt4.setInt(1,toSave.getId());
			pstmt4.setString(2,toSave.getBezeichnung());
			pstmt4.setDouble(3,toSave.getPreis());				
			pstmt4.execute();		
			pstmt4.close();			
		}catch(Exception e){			
			System.out.print(e);
			return false;
		}		
		return true;
	}
 

butalive

Mitglied
eigenartiger weise wird wenn ich diesen code ausführe, der hinzugefügte artikel angezeigt.
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;

import org.omg.CORBA.ExceptionList;

import java.util.Iterator;


public class test extends JPanel {	
	public static void main (String args[]){
		Artikel toSave = new Artikel (15,"Tasche", 15.15);		
		Connection con = null;
		ArrayList ArtListe = new ArrayList();		
		//Treiber laden
		try{			
			//Treiber laden
			Class.forName("org.hsqldb.jdbcDriver");			
			System.out.println("Treiber erfolgreich geladen");			
			//Db verbindung aufbauen
			con = DriverManager.getConnection( "jdbc:hsqldb:file:I:/MeineHSQLDb", "sa", "" );
			System.out.println("Verbindung Aufgebaut");
			try{			
				 PreparedStatement pstmt4 = con.prepareStatement("INSERT INTO ARTIKEL(ID,BEZEICHNUNG,PREIS)"+
	                  "VALUES(?,?,?)");			
				pstmt4.setInt(1,toSave.getId());
				pstmt4.setString(2,toSave.getBezeichnung());
				pstmt4.setDouble(3,toSave.getPreis());				
				pstmt4.executeUpdate();		
				pstmt4.close();			
			}catch(Exception e){			
				System.out.print(e);			
			}			
			
			//Query			
			PreparedStatement pstmt = con.prepareStatement("SELECT* from ARTIKEL");			
			ResultSet rs = pstmt.executeQuery();			
			while (rs.next()){
				Artikel art = new Artikel();
				System.out.println(rs.getInt("ID"));
				System.out.println(rs.getString("BEZEICHNUNG"));
				System.out.println(rs.getDouble("PREIS"));				
			}			
			pstmt.close();			
			rs.close();				
			
		}catch (ClassNotFoundException e){
			e.printStackTrace();
		}catch (SQLException e){
			e.printStackTrace();
		}finally{
			if(con != null){
				try{
					con.close();
				}catch(SQLException e1){
					e1.printStackTrace();
				}
			}
		}
	}	
}

lese ich aber nacher mit folgendem code nur aus, wird der artikel nicht mehr angezeigt.
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;

import org.omg.CORBA.ExceptionList;

import java.util.Iterator;


public class test extends JPanel {	
	public static void main (String args[]){
		Artikel toSave = new Artikel (15,"Tasche", 15.15);		
		Connection con = null;
		ArrayList ArtListe = new ArrayList();		
		//Treiber laden
		try{			
			//Treiber laden
			Class.forName("org.hsqldb.jdbcDriver");			
			System.out.println("Treiber erfolgreich geladen");			
			//Db verbindung aufbauen
			con = DriverManager.getConnection( "jdbc:hsqldb:file:I:/MeineHSQLDb", "sa", "" );
			System.out.println("Verbindung Aufgebaut");
					
			PreparedStatement pstmt = con.prepareStatement("SELECT* from ARTIKEL");			
			ResultSet rs = pstmt.executeQuery();			
			while (rs.next()){
				Artikel art = new Artikel();
				System.out.println(rs.getInt("ID"));
				System.out.println(rs.getString("BEZEICHNUNG"));
				System.out.println(rs.getDouble("PREIS"));				
			}			
			pstmt.close();			
			rs.close();				
			
		}catch (ClassNotFoundException e){
			e.printStackTrace();
		}catch (SQLException e){
			e.printStackTrace();
		}finally{
			if(con != null){
				try{
					con.close();
				}catch(SQLException e1){
					e1.printStackTrace();
				}
			}
		}
	}	
}
 

butalive

Mitglied
und was heisst das jetzt hab mir zwar die faq angeschaut bin aber nicht drauf gekommen was ich jetzt zu tun hab.
lg martin
 

DocRandom

Top Contributor
After the program is finished, almost all statements are in the *.log file, and the *.data file is almost empty. Why?

The database was not shut down properly. When you restart the database, the *.log file will be processed and an automatic checkpoint will be performed. No commited data will be lost. To avoid this, use the SQL command "SHUTDOWN" when your application has finished with the database.

The statements that make up the database are saved in the *.script file (mostly CREATE statements and INSERT statements for memory tables). Only the data of cached tables (CREATE CACHED TABLE) is stored in the *.data file. Also all data manipulation operations are stored in the *.log file (mostly DELETE/INSERT) for crash recovery. When the SHUTDOWN or CHECKPOINT command is issued to a database, then the *.script file is re-created and becomes up-to-date. The .log file is deleted. The *.data file is also closed and backed up as the *.backup file. When the database is restarted, all statements of the *.script file are executed first and new statements are appended to the .log file as the database is used.
..hmm was ist daran nicht zu verstehen?
The database was not shut down properly. When you restart the database, the *.log file will be processed and an automatic checkpoint will be performed. No commited data will be lost. To avoid this, use the SQL command "SHUTDOWN" when your application has finished with the database.

lg
DocRandom
 

butalive

Mitglied
super danke
habs gestern schon hin bekommen funktioniert jetzt mit shutdown.
schas fehler. hat mir echt nerven gekostet
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S HSQLDB PrepareStatement- Falsche query Datenbankprogrammierung 2
P SQL Injection verhindern ohne z.B. prepareStatement Datenbankprogrammierung 2
B createStatement vs. prepareStatement Datenbankprogrammierung 3
U MySQL mit prepareStatement den Spaltennamen ansprechen Datenbankprogrammierung 5
S Preparestatement mit join Datenbankprogrammierung 4
G PrepareStatement + Datetime Datenbankprogrammierung 9
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
L SQL Datenbank INSERT INTO Datenbankprogrammierung 6
L SQL Datenbank Tabelle insert Datenbankprogrammierung 7
O HOW TO INSERT PRIMARY INTO ANOTHER TABLE AND USE IT AS FOREIGN KEY TO DISPLAY DATA IN A RELATIONSHIP Datenbankprogrammierung 3
G Eine Spalte in xampp als Typ array erstellen - ein array mit "insert" hinzufügen. Datenbankprogrammierung 3
C Problem with INSERT.............ON DUPLICATE KEY Datenbankprogrammierung 3
A MySQL Select und Insert in Java Datenbankprogrammierung 15
S PostgreSQL Bytea INSERT Datenbankprogrammierung 8
W Problem mit Insert in zwei Tabellen Datenbankprogrammierung 8
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L SQL-Statement INSERT INTO ON DUPLICATE KEY UPDATE funktioniert nicht Datenbankprogrammierung 5
D Insert Methode per Servlet Datenbankprogrammierung 2
D Insert Methode per Servlet Datenbankprogrammierung 0
D SQLite INSERT OR REPLACE INTO macht neuen Eintrag?! Datenbankprogrammierung 2
O JDBC Daten in zwei Tabellen mit zwei foreach-Schleifen einfügen (insert into) Datenbankprogrammierung 1
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
A Oracle insert Array in DB Datenbankprogrammierung 7
C MySQL JTable in JScrollPane nach insert aktualisieren Datenbankprogrammierung 3
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
M JAVA Derby INSERT probleme Datenbankprogrammierung 12
Y MySQL Eclipselink Insert JSF Beispiel gesucht Datenbankprogrammierung 2
T MySQL MySQL - Insert into fügt zwei identische Datensätze ein Datenbankprogrammierung 2
M Derby/JavaDB Derby SQL Insert mit AUTO_INCREMENT, welche ID wurde vergeben? Datenbankprogrammierung 6
D HSQLDB INSERT INTO in einer For Schleife mit selber ID, machbar? Alternative? Datenbankprogrammierung 7
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
M INSERT-Problem = integrity constraint violation: foreign key no parent Datenbankprogrammierung 5
P MySQL INSERT / UPDATE MySQL - perStoredProcedure oder direkt im Code Datenbankprogrammierung 3
M MySQL Insert über mehrere Tabellen Datenbankprogrammierung 7
V HSQLDB Insert in eine Tabelle mit Autoincrement Datenbankprogrammierung 2
B MS SQL: Insert LOB Datenbankprogrammierung 4
M MySQL INSERT will einfach nicht funktionieren Datenbankprogrammierung 9
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
R vor/nach INSERT mysql-SETS absetzen Datenbankprogrammierung 2
C insert into mit between-Anweisung Datenbankprogrammierung 10
C Derby/JavaDB INSERT auf FOREIGN KEY schlägt fehl Datenbankprogrammierung 2
F Insert into Access Datenbankprogrammierung 3
S Nochmals: ID ermitteln nach Insert Datenbankprogrammierung 2
S ID Wert von Insert über jdbcTemplate.update Datenbankprogrammierung 3
O Viele Verbindungen-Exception bei insert Daten zur MySQL-Datenbank Datenbankprogrammierung 2
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
E Derby/JavaDB Keine Reaktion von "insert into" im ActionListener Datenbankprogrammierung 22
A Oracle Unbekannter Fehler bei insert Befehl Datenbankprogrammierung 3
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
Kenan89 Insert ohne Auswirkung Datenbankprogrammierung 7
B MySQL myBatis INSERT Datenbankprogrammierung 13
E Access Datenbank mit Insert befüllen Datenbankprogrammierung 5
M Datenbankverbindung zu langsam beim Insert? Datenbankprogrammierung 6
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
L H2 Auto INC Primary Key & Insert Datenbankprogrammierung 8
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
F H2:Wie kann man insert eine Reihe "int" wert als blob in table? Datenbankprogrammierung 12
S MySQL INSERT schlägt nicht fehl, fügt aber auch nichts ein Datenbankprogrammierung 13
S Probleme mit INSERT Befehl Datenbankprogrammierung 11
L MySQL Prepared Statement batch langsamer als bulk insert? Datenbankprogrammierung 10
M Insert in Table mit 250 Feldern Datenbankprogrammierung 2
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
A Insert Methode Syntaxfehler Datenbankprogrammierung 2
G INSERT DATE in Oracle-DB Datenbankprogrammierung 11
G ODBC Insert und gleich danach Selects Datenbankprogrammierung 8
Iron Monkey Insert into Spalte ID AUTO_INCREMENT Datenbankprogrammierung 7
C ID-Rückgabe bei INSERT Datenbankprogrammierung 5
D mysql insert - performance/robustheit, "best practice" Datenbankprogrammierung 15
M Hibernate: Insert statt Update Datenbankprogrammierung 8
C Rückgabe ob INSERT erfolgreich Datenbankprogrammierung 11
H Batch Update/Insert Datenbankprogrammierung 4
E Insert oder Update- Prüfung Datenbankprogrammierung 3
K DB2 Insert mit Subselect Fehler Datenbankprogrammierung 2
M Derby insert, ID auslesen Datenbankprogrammierung 3
W Problem bei Insert mit JDBC auf MS-SQL-Server 2005 Datenbankprogrammierung 7
G Frage zum Insert-Statement Datenbankprogrammierung 2
R Probleme mit Insert Datenbankprogrammierung 2
D Problem: Prepared Statement (Insert) funktioniert nicht. Datenbankprogrammierung 3
M Insert Update usw. Datenbankprogrammierung 2
P Insert into mit zwei Datenbanken Datenbankprogrammierung 3
S Insert mit Select Datenbankprogrammierung 6
G INSERT-STATEMENT Datenbankprogrammierung 6
M insert in 2 tabellen Datenbankprogrammierung 7
J Insert auf Access DB funktioniert nicht Datenbankprogrammierung 5
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
V Fehlermeldung beim Insert Datenbankprogrammierung 16
S Insert into , executeupdate oder executequery Datenbankprogrammierung 3
D Insert Oracle BLOB Datenbankprogrammierung 1
T ibatis + "generated p-key" nach insert? Datenbankprogrammierung 24
G Herausfinden des Primary Keys nach INSERT-Kommando? Datenbankprogrammierung 4
G INSERT abfragen ob erfolgreich? Datenbankprogrammierung 5
D INSERT String enthält ' wie kann man das Escapen? Datenbankprogrammierung 4
T INSERT-Befehl in Java für Oracle Datenbankprogrammierung 4
Y Hibernate - Datum Insert Datenbankprogrammierung 7
D ODBC Zugriff auf MDB-Datenbank, Insert Into ohne Funktion Datenbankprogrammierung 2
U INSERT INTO von 2 Textfeldern Datenbankprogrammierung 6
D Syntaxfehler in der INSERT INTO Anweisung Datenbankprogrammierung 2
F JAVA & MySQL : INSERT INTO DB ! Datenbankprogrammierung 2
D Problem mit INSERT INTO Datenbankprogrammierung 19

Ähnliche Java Themen

Neue Themen


Oben