robotto7831a Geschrieben 14. September 2009 Geschrieben 14. September 2009 Kein Wunder. == ist mir auch nur in C, C++ und PHP bekannt. In Zusammenhang mit MySQL und Oracle kenne ich das auch nicht. Frank Zitieren
screamboy14 Geschrieben 14. September 2009 Autor Geschrieben 14. September 2009 und im zusammenhang mit dbms ???? weil irgendwie muss man das doch als sql befehl schreiben können das man zum gewünschtem ziel kommt ^^ Zitieren
robotto7831a Geschrieben 14. September 2009 Geschrieben 14. September 2009 Aber nicht mit ==. Das ist ja auch gar nicht dein Problem. Frank Zitieren
screamboy14 Geschrieben 14. September 2009 Autor Geschrieben 14. September 2009 mein problem ist eigentlich, das ich es so programieren möchte, das es ENTWEDER nur den vornamen ausgibt ODER den nachnamen ODER beides (also jetz vom auslesen her ) und flashpixx hat sooft == geschrieben und gesagt das ich das in dbms schreiben muss da dachte ich das is so das mit dem das das andere feld leer sein muss hab ich wie im code 3 statements druber schon versucht zu berücksichtigen Zitieren
robotto7831a Geschrieben 14. September 2009 Geschrieben 14. September 2009 Warum muss es denn umbedingt ein großes SQL Statement sein? Bau dir doch je nachdem was der Anwender eingibt das passende Statement entweder nur mit Vorname oder Nachname oder mit beiden zusammen. Frank Zitieren
flashpixx Geschrieben 14. September 2009 Geschrieben 14. September 2009 und flashpixx hat sooft == geschrieben und gesagt das ich das in dbms schreiben muss da dachte ich das is so Ich hatte aber auch geschrieben dass es der C Syntax ist, Du musst auch bitte meine Postings lesen. Da Du das DBMS nicht nennst kann man auch nur beschränkt helfen. Du musst es eben schon auf den Synatx der DB anpassen und ich würde Dir empfehlen das Statement auch erst einmal nativ auf dem DBMS auszuführen, damit Du das Ergebnis siehst, bevor Du es im Quellcode machst. Je nach DBMS wird auch das XOR entsprechend umgesetzt, alternativ kann man XOR auch als AND-ODER-Kombination ausdrücken, zusätzlich würde ich prüfen, ob Du Deine komplette Kondition nicht vereinfachen kannst (Bool'sche Algebra). Auch die Prüfung auf "leer" ist meist DBMS spezifisch Zitieren
screamboy14 Geschrieben 14. September 2009 Autor Geschrieben 14. September 2009 ich habe doch gesagt, ich hab access und wie ich da nen sql eingebe weiß ich nicht und davon abgesehen in der schule arbeiten wir mit der i5 und da gibts eigentlich KEIN xor (hat mein lehrer heute ausprobiert) und naja kp bin ratlos -.- Zitieren
flashpixx Geschrieben 14. September 2009 Geschrieben 14. September 2009 Bitte lies Dir einmal die Wikipedia Artikel zu XOR durch, da wirst Du auch wenn es für Gatter ist sehen, dass man XOR als entsprechende AND-OR-Kombination ausdrücken kann XOR-Gatter ? Wikipedia Über das Gesetz von DeMorgan De Morgansche Gesetze ? Wikipedia und die dort verlinkte Aussagenlogik bzw Boolsche Algebra kannst Du Deinen Ausdruck ggf. vereinfachen. Du solltest einmal den genannten Ausdruck: (vorname == ?? und nachname == leer) xor (nachname == ?? und vorname == leer) xor (vorname == ?? und nachname = ??) entsprechend formulieren und ausprobieren. In Access kann man auch Abfragen erstellen und dort direkt den SQL Syntax eingaben Zitieren
screamboy14 Geschrieben 17. September 2009 Autor Geschrieben 17. September 2009 ich hab mir mal den ratschlag alles einzeln in eriner if anweisung ztu schreiben zu herzen genommen und es in die tat umgesetzt (auch wenn ich zuerst nen logischen fehler gemacht hab und das .getText vergessen hab) aber jetz ist mein problem es wird garnichts mehr angezeigt weder eine fehlermeldung noch irgendetwas in einem textfeld ich hab versucht es mir auf der eclipse console ausgeben zu lassen aber da kommt auch nix danke nochmal für die hilfe =) //-------------Verbindung herstellen------------------------ Toolbox myBox = new Toolbox(); myBox.setAccessData("Klient.mdb"); if (jTextFieldVorname.getText() == null && jTextFieldName.getText() == jTextFieldName.getText()) { String data[][] = myBox.queryAccess("SELECT * FROM KlientTab WHERE (Name = '" + jTextFieldName.getText() + "')"); //------------FELDAUSGABE---------------------- jTextFieldName.setText(data[0][0]); jTextFieldVorname.setText(data[0][1]); jTextFieldGebDat.setText(data[0][2]); jTextFieldAlter.setText(data[0][3]); jTextFieldAdresse.setText(data[0][4]); jTextFieldHaus.setText(data[0][5]); jTextFieldHandy.setText(data[0][6]); jTextPaneNotitz.setText(data[0][7]); jTextAreaStatus.setText("Datensatz gefunden"); } Zitieren
ksg9-sebastian Geschrieben 21. September 2009 Geschrieben 21. September 2009 (bearbeitet) Schreibst du den Code eigentlich selbst oder kopierst du das zusammen? Hast du ne Ahnung von dem was du da tust? Alleine schon die If-Bedingung: f (jTextFieldVorname.getText() == null && [b]jTextFieldName.getText() == jTextFieldName.getText()[/b]) Mal abgesehen davon dass die Abfrage quark ist vergleicht man Strings mit "equals" und nicht mit "==". Mit "==" machst du nen Referenzenvergleich - was in dem Fall falsch ist. JTextComponent#getText() holt den Text anhand der Methode getDocument()#getText(start, end) - und die Methode liefert jedesmal ein neues String-Objekt zurück. Und somit liefert die Bedingung immer false. Und, mal davon abgesehen, hat die Abfrage null Sinn. Was willst du damit prüfen? Ob zwischen dem ersten Aufruf von getText() und dem zweiten Aufruf von getText() der Benutzer etwas geändert hat? Falls du das denkst dann solltest du mit Datenbankprogrammierung aufhören und nochmal gaaaaaanz von vorne anfange. So, dann weiter: 1) Glaskugel ist in Reparatur, deshalb kann ich dir nicht sagen warum keine Daten ankommen 2) Was ist myBox ? 3) Was macht die Methode "myBox#queryAccess" ? 4) Warum kommt als Ergebnis ein 2-dimensionales StringArray? 5) Was passiert wenn du den SQL-Befehl in MS Access direkt ausführst? (MS Access starten -> Datenbank öffnen -> Abfragen -> Neue Abfrage -> Das Fenster wegklicken -> Ansicht/SQL-Ansicht auswählen) 6) Was genau willst du eigentlich machen? Eingegeben wird Vorname + Nachname, und was willst du nun haben? Alle Sätze bei denen a) vorname = Eingabe Vorname und nachname = Eingabe Nachname ?? Bearbeitet 21. September 2009 von ksg9-sebastian Zitieren
screamboy14 Geschrieben 22. September 2009 Autor Geschrieben 22. September 2009 also ich möchte damit nix prüfen ich möchte folgende systematik damit abfrgen (über java auf eine access datenbank) (a oder und wenn a aktiv ist soll b entweder leer sein oder auch was beinhalten und umgekehrt genauso SO 2/3 my box ist ein befehl der zur toolbox gehört um auf die datenbank zuzugreifen (ein von lehrern meiner schule geschriebenes plug in welches den zugriff über JDBC.ODBC erspart) 4 weil man uns das so beigebracht hat (da werden die einzelnen einträge gespeichert, und dann in die Textfelder gesetzt) 5 mach ich noch 6 ein programm in zur abfrage einer datenbank indem man entweder den abfrageausdruck ins erste feld ODER ins 2te feld schreiben kann (normales oder) Zitieren
screamboy14 Geschrieben 22. September 2009 Autor Geschrieben 22. September 2009 5 da kommt das selbe, wie bei eclipse felender operator im abfrageausdruck name = "Name" and where "Vorname" = null or (Vorname = "vorname" and "name" = null); Zitieren
Klotzkopp Geschrieben 22. September 2009 Geschrieben 22. September 2009 Ich glaube, ich hatte es schon einmal geschrieben: Zweimal where ist Blödsinn. Zitieren
elSusto Geschrieben 22. September 2009 Geschrieben 22. September 2009 (bearbeitet) SELECT * FROM deineTabelle WHERE Vorname LIKE 'deinParameter*' OR Name LIKE 'deinParameter*' sollte das bicht so aussehen ?! Dann bekommste z.B. wenn du Chris eingibst auch Christoph zurück gegeben wenn so ein eintrag exestiert. Und ansonsten das * einfach weg nehmen. Bearbeitet 22. September 2009 von elSusto Zitieren
ksg9-sebastian Geschrieben 22. September 2009 Geschrieben 22. September 2009 Ok, nochmal: Dieser Code: if (jTextFieldVorname.getText() == null && jTextFieldName.getText() == jTextFieldName.getText()) { String data[][] = myBox.queryAccess("SELECT * FROM KlientTab WHERE (Name = '" + jTextFieldName.getText() + "')"); //------------FELDAUSGABE---------------------- jTextFieldName.setText(data[0][0]); jTextFieldVorname.setText(data[0][1]); jTextFieldGebDat.setText(data[0][2]); jTextFieldAlter.setText(data[0][3]); jTextFieldAdresse.setText(data[0][4]); jTextFieldHaus.setText(data[0][5]); jTextFieldHandy.setText(data[0][6]); jTextPaneNotitz.setText(data[0][7]); jTextAreaStatus.setText("Datensatz gefunden"); } wird nie ausgeführt, weil jTextField.getText() == jTextField.getText() immer false liefert! Mach das draus: if (jTextFieldVorname.getText() == null){ ... } und es geht.. Zitieren
screamboy14 Geschrieben 22. September 2009 Autor Geschrieben 22. September 2009 naja SOLLTE funktionieren tut es aber nicht =( egal so nach 2 wocehn oder wielang ich an dem einen befehl jetz sitze hab ich da auch langsam kb mehr drauf naja trodsdem danke für die hilfe =) ihr seid super ^^ Zitieren
flashpixx Geschrieben 22. September 2009 Geschrieben 22. September 2009 naja SOLLTE funktionieren tut es aber nicht ksg9-sebastian hat geschrieben, dass dieser Code nie funktionieren wird, weil die If-Bedingung immer false liefert Zitieren
screamboy14 Geschrieben 22. September 2009 Autor Geschrieben 22. September 2009 ich meine ja auch das wo er geschrieben hat und es geht ^^ den code mein ich (weiß leider nicht wie man zitat macht ^^) Zitieren
ksg9-sebastian Geschrieben 22. September 2009 Geschrieben 22. September 2009 Offensive Anti-Rechtsschreibung? Ich blick nimmer was du willst und war nicht funktioniert. Wenn du per SQL auf "null" prüfen willst musst du in aller Regel so Abfragen: select * from tabelle where feld is null Viele Datenbanken mögen es nicht wenn man Strings mit = abfrägt, deshalb select * from tabelle where feld like 'text'; Auch auf das einzelne Hochkammata achten! Zitieren
screamboy14 Geschrieben 22. September 2009 Autor Geschrieben 22. September 2009 also nochmal ^^ ich möchte ein programm schreiben welches einen zugriff auf eine access db hat da ich mir bei der abfrage radiobuttens sparen möchte, wollte ich den sql befehl so schreiben, das daten angezeigt werden, wenn ich name OR vorname eingebe bzw beides und nein kein anti rechtschreiber ein rechtschreibschwächelnder ^^ man das hat jetz schon 3 seiten =( kein wunder das keiner mehr durchblickt Zitieren
flashpixx Geschrieben 22. September 2009 Geschrieben 22. September 2009 [...] wenn ich name OR vorname eingebe bzw beides Ich gehe Dir jetzt noch einmal den Hinweis auf: wenn Vorname gesetzt, dann nur Vorname verwenden wenn Nachname gesetzt, dann nur Nachname verwenden wenn beides, dann beides verwenden Das kannst Du entweder in Java so implementieren, so dass Dein SQL Statement direkt fertig an Access gereicht wird oder Du kannst es innerhalb des SQL Statements machen. Außerdem solltest Du eine SQL Anbindung nicht per String-Konkatination durchführen, sondern mit Prepare-Statements Zitieren
screamboy14 Geschrieben 1. Oktober 2009 Autor Geschrieben 1. Oktober 2009 erstmal danke an alle die mir geholfen haben =) ich hab es endlich geschaft es funzt so wie ich es ahben möchte =) if (jTextFieldVorname.getText().equals("")) { String data[][] = myBox.queryAccess("SELECT * FROM KlientTab WHERE Name = '" + jTextFieldName.getText() + "'" ); danke nochmal =) Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.