Wenn wir eine Methode entwickeln müssen, um die Datenbank abzufragen, stoßen wir häufig auf ein Problem: Wir wissen nicht, welche Bedingungen der Benutzer eingeben. Wie können wir also mit SQL -Anweisungen umgehen, damit die Methoden, die wir entwickeln, normal funktionieren können, egal welche Bedingungen sie akzeptieren? Zu diesem Zeitpunkt kann '1' = '1' Plus -Liste dieses Problem perfekt lösen. Weniger Unsinn fügen Sie den Code hinzu:
// Fuzzy Query -Methode öffentliche Liste <Person> query () {list <Person> list = new ArrayList <> (); Verbindungs con = null; Scanner SC = neuer Scanner (System.in); System.err.println ("Name eingeben:"); String name = sc.Nextline (); System.err.println ("ID eingeben:"); String id = sc.Nextline (); System.err.println ("Eingeben Sie Tel:"); String tel = sc.Nextline (); System.err.println ("Sex:"); String sex = sc.Nextline (); String SQL = "ID, Name, Tel, Sex von Schülern" // Hier ist der Trick, einigermaßen Spleißen String + "wobei 1 = 1"; Liste <Object> list1 = new ArrayList <Object> (); // Verwenden Sie das Commons-Lang-Paket if (stringutils.isnotEmpty (name)) {sql += "und title like?"; list1.add ("%" + name + "%"); } if (! stringutils.isempty (id)) {sql += "und content Like?"; list1.add ("%" + id + "%"); } if (! stringutils.isempty (tel)) {sql += "und addr ähnlich?"; list1.add ("%" + tel + "%"); } try {con = dsutlis.getConnection (); // Nachdem die SQL -Anweisung komponiert wurde, wird ein PST -Objekt generiert. PrepedStatement pst = con.Preparestatement (SQL); // den Wert von? für (int i = 0; i <list1.size (); i ++) {pst.setObject (i+1, list.get (i)); } ResultSet rs = pst.executeQuery (); while (rs.Next ()) {Person p = new Person (); P.SetID (rs.getString ("id")); P.SetName (Rs.GetString ("Name")); P.Settel (Rs.getString ("Tel")); P.SetSex (Rs.GetString ("Sex"). Equals ("1")? "Männlich": "weiblich"); list.add (p); } rs.close (); pst.close (); } catch (Ausnahme e) {e.printstacktrace (); } endlich {try {con.close (); } catch (sqlexception e) {e.printstacktrace (); }} Rückgabeliste; } Anmerkung:
1. Der obige Code arbeitet in einer Oracle -Datenbank:
Tabellenstudenten erstellen (ID varchar (32), Name Varchar (30), Tel Varcher (15), Sex -Char (1), Constraint Stud_pk Primärschlüssel (ID));
2. Verwenden Sie Werkzeugkurse, um eine Verbindung zu erhalten
3. Proson ist ein Javabäer
Nachfolgend finden Sie eine Anleitung, wie Sie Java verwenden, um Fuzzy -Abfragenergebnisse zu erzielen
Import Java.io.*; Import Java.awt.*; Import Java.awt.event. // Flurry Query Public Class Media {public static void main (String args []) {jframe Fram = new MediaFrame (); Frame.SetDefaultCloseOperation (jframe.exit_on_close); Jbutton btn; private jbutton btn1; privat jbutton btn2; private jbutton btn3; privat jbutton btn4; privat jFilechoser wähler; privat jtextfield textfield; map hashtable = new Hashtable (); privat int i = 0; MediaFrame () {settitle ("media"); setSize (600.500); JMenuBAR -Menü = new JMenuBar (); setJMenuBar (Menü); JTOOLBAR (); M = New DefaultListModel (); list = new JList (m); list.setFixedCellWidth (100); list.setSelectionMode (listSelectionModel.multiple_interval_Selection); list.addlistSectionLectionList (thiscrollPane); JFilechoOser (); btn = new Jbutton ("add Song"); Btn.addactionListener (this); Btn1 = neuer Jbutton ("delete Song"); Btn1.addactactionListener (this); track "); btn3.addactionListener (this); btn4 = new jbutton (" sorting "); btn4.addactionListener (this); GridLayout (5,1)); Panel.Add (Btn); Panel.Add (Btn1); Panel.Add (Btn2); Panel.Add (Btn3); Panel.Add (Btn4); Tb.SetLayout (New GridLayout (1,2)); result = chooser.showopendialog (mediaFrame.this); if (result == jFilechooser.Approve_Option) {System.out.println (i); String name = chooser.getSelectedFile (). getPath (); String Str1 = name; int str2 = name.lastIndexof ("//); name1 = name.substring (str2+1, str1.length ()); // Abfangen alle Zeichenfolgen vor dem letzten "/" int str3 = name1.lastIndexof ("."); String name2 = name1.substring (0, str3); // Abfangen alle String -Suffixes nach ".". "." Hashtable.put (i, name2); M.Add (0, hashtable.get (i)); System.out.println (hashtable);}} if (Event.getSource () == Btn1) {M.RemoveElement (list.getSelectedValue (); (Event.getSource () == Btn2) {System.out.println (m); i = 0; name = textField.getText (); System.out.println (M.GetSize ()); for (j = 1; j <= M.GetSize (); j ++) {must p = muster.comPile ("^"+name+"+"); // regulärer Ausdruck wählt alle Queryergebnisse, die durch das Wort angezeigt werden, das Sie in Match -Match = p.mather (sping) (j)). (match.find ()) {s ++; // den Indexknoten in das Array A [] A [s] = a [s]+M.GetSize ()-J; System.out.println (Hashtable.get (j)); system.out.Outln (a [s]); e) {}} if (event.getSource () == Btn4) {// int j; // für (j = 0; j <M.Length (); j ++) // {// if (Hashtable ValuEchanged (listSelectionEvent Ereignis) {System.out.println (list.getSelectedIndex ());}}Haben Sie anhand dieser beiden Beispiele ein gewisses Verständnis von Java Fuzzy -Query -Methoden? Ich hoffe, Sie mögen den Artikel des Herausgebers und folgen weiter!