hsqldb Befehle in Java

Status
Nicht offen für weitere Antworten.

Corre

Mitglied
Hallo!
Ich muss in Java ein Verwaltungssystem programmieren und hab mit Hsqldb so meine Schwierigkeiten:

also Tabelle anlegen:
Code:
   rs =stmt.executeQuery(
	"CREATE TABLE musi (status VARCHAR(10),name VARCHAR(20),autor VARCHAR(20))");

Füllen:
Code:
stmt.executeUpdate("INSERT INTO musi (status,name,autor)VALUES ('verfügbar','"+ neu.titel+ "','"+neu.Autor+ "'') ");
wobei neu ein Objekt vom Typ Item ist und aus Titel, autor besteht.

das erzeugen einfügen drucken funktioniert ja schon ganz gut 🙂 aber
So zu den Problemen: Diese funktionieren alle nicht, wieso das möcht ich wissen :

Code:
rs = stmt.executeQuery("SELECT titel FROM musi");

stmt.executeQuery("DELETE * FROM musi WHERE titel=neu.titel");

rs = stmt.executeQuery("SELECT * FROM musi WHERE param=autor");
Sprich, löschen, sortieren, suchen, und teilweises select funktionieren nicht ???


Jemand ne Lösung für das Problem ?
danke
mfg
Corre
 
Oke danke das war ne blöde Sache aber wenn ich folgendes mache:
Code:
		rs = stmt.executeQuery("SELECT name FROM musi");
dann bekomm ich nur die erste Zeile nicht die gesamte Spalte ? muss diese durchlaufen werden
Code:
stmt.executeQuery("DELETE * FROM musi WHERE name=Hase");
rs = stmt.executeQuery("SELECT * FROM musi WHERE name=Sepp");
Funktioniert leider auch nicht.
 
HSQL kenn ich nicht wirklich, aber ich denk mal das es ähnlich ist wie MySQL.

1.) Bei DELETE gibt es kein "DELETE * FROM". Die Syntax ist
"DELETE FROM <tabelle> WHERE <feld>=<wert>"

Wenn du den Teil von WHERE an weglässt, dann wird die ganze Tabelle leer geräumt

2.) Was bitte ist neu.titel? Seh ich da ein Leerzeichen nach dem neu. ?

3.) Was ist param, was ist autor ? Häng mal die Tabellennamen vor deine Felder

"SELECT tabelle.feldA, tabelle.feldB FROM tabelle"

oder

"SELECT t.feldA, t.feldB FROM tabelle t"
 
danke dir
neu is ein objekt der Klasse Item, Item neu = new Item("Hase","Janosch");
Code:
stmt.executeUpdate("DELETE FROM musi WHERE name='Hase'");
das funktioniert jetzt prima, ich möchte jedoch das Hase aus dem Item mitttels neu.name auslesen !
Code:
stmt.executeUpdate("DELETE FROM musi WHERE name=neu.name");
dies geht leider nicht?
 
das Problem könnte doch das folgende sein:

Wenn ich direkt mache mit
Code:
stmt.executeUpdate("DELETE FROM musi WHERE name='Hase'");
dann hat er seine ' ' und ist zufrieden, wenn ich jedoch das Item auslese hat er doch die " " :
Code:
String del=neu.name;
stmt.executeUpdate("DELETE FROM musi WHERE name=del");
Jemand ne Ahnung wie das zweite funktionieren könnte ?
 
ja, so:

stmt.executeUpdate("DELETE FROM musi WHERE name="neu.name);

Das was du gemacht hast ist ähnlich wie das:

Code:
String text = "Das ist Text";

System.out.println("text");  //Ausgabe: text

Das was du gemacht hast geht nur in PHP. Wenn du in Java Variablen o.ä. ausgeben willst, dann warst du sie nicht in Anführungszeichen schreiben, ansonsten wird das ganze zu nem String.

Immer so:

Code:
String text = "Das";
String textZwei = "ein";
String ende = "!";

System.out.println(text + " ist " + textZwei + " Text " + ende);
//Ausgabe: Das ist ein Text !
 
nimm ein preparedStatement, oder für anfänger

Code:
String del=neu.name;
stmt.executeUpdate("DELETE FROM musi WHERE name='+del+'");
 
das alte hät ich nur hab ich wieder eine Sache: Also...

Ich möchte je nachdem was param gerade ist (also name,autor,isbn) eine der unteren Abfrage machen und in rs speichern nur wie kann ich eine Abfrage machen? Weil alle zu machen geht nicht da hab ich dann nur die letzte.
Code:
public void search(String param)  {

	 	rs = stmt.executeQuery("SELECT * FROM musi WHERE name='"+param+"'");
		
		rs = stmt.executeQuery("SELECT * FROM musi WHERE autor='"+param+"'");
			
		rs = stmt.executeQuery("SELECT * FROM musi WHERE isbn='"+param+"'");

}
Wie kann ich da ne If - Anweisung ansetzen, sodass wenn der name = param ist dies in rs gespeichert wird und die andren nicht, usw.
Wenn ich nur eine verwende als nur nach isbn suchen kann dann funktionierts nämlich.

danke
 
Code:
sql = new stringbuffer("SELECT * FROM MUSI WHERE 1=1");
if(...) sql.append(" AND name='").append(param).append("' ");
if(...) sql.append(" AND autor='").append(param).append("' ");
if(  ) sql.append(" AND isbn='").append(param).append("' ");
 
kannst du mir das einwenig erläutern ? danke

Ich möchte ja das Ergebnis der Abfrage in einen ResultSet speichern, weil meine PrintFunktion diese dann ausgibt.
Wie kann ich da die If-Abfrage (Bedigung) ansetzen?

danke
 
die Frage ist, woher du überhaupt weisst, ob param jetzt ein name, ein autor oder eine isbn ist, nach der du suchen willst
 
beschreib doch dein problem genauer

Code:
sql = new stringbuffer("SELECT * FROM MUSI WHERE 1=1"); 
if(...) sql.append(" AND name='").append(param).append("' "); 
if(...) sql.append(" AND autor='").append(param).append("' "); 
if(  ) sql.append(" AND isbn='").append(param).append("' ");

Also, mit der Zeile
sql = new stringbuffer("SELECT * FROM MUSI WHERE 1=1");

wird ein StringBuffer erzeugt der den Text "SELECT * FROM MUSI WHERE 1=1" enthält.

Die If-Abfragen dannach hängen nur noch Text an den StringBuffer dran, je nachdem welche bedingung zutrifft.
 
also: egal ob name,autor oder isbn der param gerade ist, will ich in der db nach param suchen und wenn er einen param findet soll er die zeile ausgeben.

Es muss dann in ein ResultSet gespeichert werden, da dies meine Print funktion dann drucken kann.

klaro ?
 
na wenns egal ist
Code:
sql = new stringbuffer("SELECT * FROM MUSI WHERE 1=1");
if(null!=param && param.length()>0){
 sql.append(" OR name='").append(param).append("' ");
 sql.append(" OR autor='").append(param).append("' ");
 sql.append(" OR isbn='").append(param).append("' "); 
}
 
oke danke aber wie kann ich den stringbuffer dann in ein ResultSet wandeln ? ich möchte eben das das Ergebnis in einem Resultset drin ist. ?
 
hm was bedeutet WHERE 1=1 ?

Ausgabe sind alle Einträge nicht der Gesuchte ?

Will einfach nur was suchen in der Db und die Zeile dann ausgeben ?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben