SELECT bei Datenbankverbindung

invictus

Mitglied
Hallo,

Ich sitze momentan an einem Programm für die Datenbankverbindung durch mySQL.
Zunächst frage ich im Menü ab, welchen SQL-Befehl ich ausführen will: SELECT, INSERT, DELETE und UPDATE.
Wähle ich SELECT werde ich nach 2 Attributen gefragt nach welchen ich suchen will, z.B. Vorname und Name. Allerdings wird weder der Datensatz ausgegeben, noch irgendwelchen Fehlermeldungen.
Mein Lehrer meint, dass liegt darin, dass die Anführungstriche im Menü mit erfasst werden und im Datensatz ja keine Anführungsstriche sind. Wie man diesen Problem behebt, wusste er selber nicht.

Ich habe gelesen, dass man durch replace die Anführungsstriche dann entfernen kann. Es funktioniert dennoch nicht.

Hier mein Quellcode:

[JAVA=42]public class TestMySQL {
public static void main(String[] args) {
String driver = "com.mysql.jdbc.Driver";
try {
Class.forName(driver);
} catch (ClassNotFoundException ex) {
System.out.println("Treiber nicht gefunden!");
}
String url = "jdbc:mysql://localhost:3306/kontakte";
String usr = "root";
String pwd = "";
Connection db;
ResultSet rs;
String sql;

String[] options = new String[] { "SELECT", "INSERT", "DELETE",
"UPDATE" };
String[] antwortOptions = {
"SELECT", "INSERT", "DELETE", "UPDATE" };

String antwort = (String) JOptionPane.showInputDialog( null,
"Optionen",
"Was möchtest du ausführen=",
JOptionPane.QUESTION_MESSAGE,
null, antwortOptions,
antwortOptions[1] );

if (antwort.equals("SELECT")) {
String[] options1 = new String[] { "","kontaktid", "name", "vorname","email","telefon",
"PLZ" };
String[] antwortOptions1 = {
"", "kontaktid", "name", "vorname","email","telefon",
"PLZ" };
String[] antwortOptions2 = {
"", "kontaktid", "name", "vorname","email","telefon",
"PLZ" };

String antwort1 = (String) JOptionPane.showInputDialog( null,
"Optionen",
"Nach welchen Attribut willst du suchen?",
JOptionPane.QUESTION_MESSAGE,
null, antwortOptions1,
antwortOptions1[1]);

String filter1 = JOptionPane.showInputDialog("filter1: ");

String antwort2 = (String) JOptionPane.showInputDialog( null,
"Optionen",
"Nach welchen weiteren Attribut willst du suchen?",
JOptionPane.QUESTION_MESSAGE,
null, antwortOptions2,
antwortOptions2[1]);

String filter2 = JOptionPane.showInputDialog("filter2: ");

antwort1.replace("\"","");
antwort2.replace("\"","");
// antwort1 = antwort1.replace(char(34), "");
// antwort2 = antwort2.replace(char(34), "");
try {
db = DriverManager.getConnection(url, usr, pwd);

// Erstes ? = antwort1, Zweites ? = filter 1, Drittes ? = antwort2, Viertes ? = filter2
sql = "select * from kontakte where ? like ? and ? like ?";
PreparedStatement stmt = db.prepareStatement(sql);
stmt.setString(1, antwort1);
stmt.setString(2, filter1 + "%");
stmt.setString(3, antwort2);
stmt.setString(4, filter2 + "%");

rs = stmt.executeQuery();

while (rs.next()) {

String name = rs.getString("name");
String vorname = rs.getString("vorname");
String eMail = rs.getString("eMail");
String telefon = rs.getString("telefon");
String PLZ = rs.getString("PLZ");
JOptionPane.showMessageDialog(null, "Name: "+name+"\n"+"Vorname: "+vorname+"\n"+"email: "
+eMail+"\n"+"Telefon: "+telefon+"\n"+"PLZ: "+PLZ+"\n");
}
db.close();
} catch (SQLException e) {
e.printStackTrace();
}[/code]

Ich bitte um Hilfe.
 
Zuletzt bearbeitet:

fastjack

Top Contributor
select * from kontakte where ? like ? and ? like ?

geht nicht.

select * from kontakte where name like ? and vorname like ?
 

invictus

Mitglied
Und wie kann ich dann zwei beliebige Attribute wählen? Vorname und Name wäre ja fest vorgeschrieben. Ich möchte aber dass man selber entscheidet wonach man sucht, z.B. Vorname und PLZ.
 

fastjack

Top Contributor
Dann musst Du das Query dynamisch zusammenbauen, je nachdem was ausgewählt wurde. Kurz gesagt braucht Du mehrere Queries.
 

invictus

Mitglied
Bei meiner Anzahl von Attributen gäbe es zuviele Kombinationsmöglichkeiten.
Der Quellcode wäre viel zu lang, um das zu realisieren.

Gibt es keine andere Möglichkeit?
 

fastjack

Top Contributor
Wie gesagt, du musst das Query dynamisch zusammenbauen. Also in einer Schleife, in der Du durch die ausgewählten Felder gehst.
 

turtle

Top Contributor
Ich möchte (wieder) mein Lieblingsframework myBATIS nennen.

Dieses kann sehr einfach mit dynamischen SQL umgehen.

Hier mal ein Beispiel, mit dem nach Vorname und/oder Nachname gesucht werden kann.

[XML] <select id="selectAllPersons" resultType="entities.Person" parameterType="entities.Person">
select id,vorname,nachname from person
<where>
<if test="vorname != null">
AND vorname like #{vorname}
</if>
<if test="nachname != null">
AND nachname like #{nachname}
</if>
</where>
</select>
[/XML]
Gibt der Benutzer nur den Vornamen ein
Java:
					Person searchPerson = new Person();
				searchPerson.setVorname("Angela");
				List<Person> listPersons = sqlSession.selectList(
						"Person.selectAllPersons", searchPerson);
wird folgender SQL-Befehl abgesetzt
SQL:
select id,vorname,nachname from person WHERE vorname like ?
Wird Vor- UND Nachname eingegeben, wird folgender SQL-Befehl abgesetzt. Man beachte das automatische Entfernen vom ersten AND.
SQL:
select id,vorname,nachname from person WHERE vorname like ? AND nachname like ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb SELECT ohne IdClass-Annotation Datenbankprogrammierung 3
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
T MySQL Dynamisch Suchen Select Datenbankprogrammierung 4
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
S Insert mit Select Datenbankprogrammierung 6
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
T LIMIT In SELECT Anweisung Datenbankprogrammierung 4
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
G SELECT Name= " " verhindern Datenbankprogrammierung 5
G Syntax für Select - Abfrage mit Variablen Datenbankprogrammierung 39
J SELECT-Statement Datenbankprogrammierung 4
R Select auf der Konsole ausgeben Datenbankprogrammierung 2
D brauche mal kurz hilfe bei einem select-stmt Datenbankprogrammierung 6
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
D HSQLSB SELECT Datenbankprogrammierung 9
Oneixee5 Datenbankverbindung mit Zertifikat absichern. Datenbankprogrammierung 3
H Datenbankverbindung zu MS Access Datenbankprogrammierung 4
Zrebna Wie mittels PL/SQL eine Datenbankverbindung blockieren? Datenbankprogrammierung 6
B Probleme mit Datenbankverbindung Datenbankprogrammierung 2
J Jar-Datei stellt keine Datenbankverbindung her Datenbankprogrammierung 3
B SQLite Frage zu SQLite Datenbankverbindung Datenbankprogrammierung 7
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
T Problem mit Datenbankverbindung Datenbankprogrammierung 22
I Datenbankverbindung Oracle DB klappt nicht - getConnection returned null Datenbankprogrammierung 8

Ähnliche Java Themen


Oben