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.
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: