Lorsque nous devons développer une méthode pour interroger la base de données, nous rencontrons souvent un problème: nous ne savons pas quelles conditions l'utilisateur entrera, alors comment pouvons-nous gérer les instructions SQL afin que les méthodes que nous développons puissent fonctionner normalement, quelles que soient les conditions qu'ils acceptent? À l'heure actuelle, où la liste '1' = '1' Plus peut parfaitement résoudre ce problème. Moins non-sens, ajoutez le code:
// Méthode de requête floue Liste publique <ponse> Query () {list <onon> list = new ArrayList <> (); Connexion con = null; Scanner SC = nouveau scanner (System.in); System.err.println ("Entrer le nom:"); String name = sc.nextline (); System.err.println ("Entrer ID:"); String id = sc.nextline (); System.err.println ("Entrez Tél:"); String tel = sc.nextline (); System.err.println ("Entrez le sexe:"); String Sex = sc.nextline (); String SQL = "SELECT ID, Name, Tel, Sex From Students" // Voici l'astuce, une chaîne d'épissage raisonnable + "où 1 = 1"; List <object> list1 = new ArrayList <Bject> (); // Utilisez le package Commons-Lang if (stringUtils.isnotempty (name)) {sql + = "et title comme?"; list1.add ("%" + name + "%"); } if (! stringUtils.isempty (id)) {sql + = "et contenu comme?"; list1.add ("%" + id + "%"); } if (! stringUtils.isempty (tel)) {sql + = "et addr like?"; list1.add ("%" + tel + "%"); } essayez {con = dsutlis.getConnection (); // Une fois l'instruction SQL composée, un objet PST est généré. Préparé PST = CON.PrepareStatement (SQL); // définir la valeur de? for (int i = 0; i <list1.size (); i ++) {pst.setObject (i + 1, list.get (i)); } ResultSet rs = pst.executequery (); while (Rs.Next ()) {personne p = new personne (); P.SetId (Rs.GetString ("ID")); P.SetName (Rs.GetString ("Name")); P.Settel (Rs.GetString ("Tel")); P.SetSEX (Rs.GetString ("Sex"). Equals ("1")? "Male": "Femme"); list.add (p); } Rs.Close (); pst.close (); } catch (exception e) {e.printStackTrace (); } enfin {try {con.close (); } catch (sqlexception e) {e.printStackTrace (); }} Retour List; } annotation:
1. Le code ci-dessus fonctionne sur une base de données Oracle:
Créer des étudiants de table (id varchar (32), nom varchar (30), Tel Varcher (15), Sex char (1), Contrainte Stud_PK Primary Key (ID));
2. Utilisez des classes d'outils pour obtenir la connexion
3. La proson est un javabean
Vous trouverez ci-dessous un guide pour utiliser Java pour faire des résultats de requête floue
import java.io. *; import java.awt. *; import java.awt.event. *; import javax.swing.event. *; import javax.swing.event. *; import javax.swing.filechooser. *; import java.util. *; import java.util.regex. *; // Flurry Query public class Media {public static void main (String args []) {jframe frame = new MediaFrame (); frame.setDefaultCloseOperation (jframe.exit_on_close); frame.setVisible (true);}} class MediaFrame étend JFrame implémenter ActionListener, listSelection Listener {private Jlist List btn; private jbutton btn1; private jbutton btn2; private jbutton btn3; private jbutton btn4; private jFilechooser chooser; private jTextfield textfield; map hashable = new hashTable (); private int i = 0; int s = 0; public hashable MediaFrame () {Settitle ("Media"); setSize (600,500); JMenubar menu = new JMenubar (); setJMenubar (menu); jLabel Label = new JLabel ("Query Song Name:"); TextField) Jtoolbar (); m = new defaultListModel (); list = new Jlist (m); list.setFixedCellWidth (100); list.setSelectionMode (listSelectionModel.Multiple_Interval_Selection); list.addlistSelectionListener (this); jscrollpane Pane = New JscrollPane (list); JFileChoOser (); btn = new Jbutton ("Add Song"); btn.AddactionListener (this); btn1 = new JButton ("Delete Song"); btn1.addactionListener (this); btn2 = new Jbutton ("list"); btn2.adactionListener (this); btn3 = news for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for for fornated (this); btn); btn20 piste "); btn3.addactionListener (this); btn4 = new JButton (" tri "); btn4.addactionListener (this); jpanel Panel = new JPanel (); panneau.SetLayout (new GridLayout (5,1)); Panel.Add (BTN); Panel.Add (BTN1); Panel.Add (BTN2); Panel.Add (BTN3); Panel.Add (BTN4); TB.SetLayout (New GridLayout (1,2)); tb.add (pANE); tb.add (panneau); add (tb, borderLayout.west);} public void ActionPerformed (eventEvent event) {if (event.getsource (nouveau fichier btn) {i ++; chooser.setcurrentDirectory (new fichier (""); 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 ("//"); String; name1 = name.substring (str2 + 1, str1.length ()); // intercepter toutes les chaînes avant le dernier "/" int str3 = name1.lastIndexof ("."); chaîne name2 = name1.substring (0, str3); // intercepter tous les suffixe de chaîne après "." hashTable.put (i, name2); m.add (0, hashTable.get (i)); System.out.println (hashTable);}} if (event.getSource () == btn1) {M.RemoveElement (list.getSelectedValue ()); System.out.println (m);} (event.getsource () == btn2) {System.out.println (m); i = 0; hashTable.Clear (); m.Clear ();} if (event.getSource () == btn3) {int [] a = new int [m.getSize ()]; try {int j; String; String; name = textfield.getText (); System.out.println (m.getSize ()); pour (j = 1; j <= m.getSize (); j ++) {Pattern p = motif.compile ("^" + name + "+"); // Expression régulière sélectionne tous les résultats de requête en direction du mot. (match.find ()) {s ++; // Enregistrez le nœud d'index dans le tableau a [] a [s] = a [s] + m.getSize () - j; System.out.println (hashtable.get (j)); System.out.println (a [s]);}} // Vous ne pouvez sélectionner aucune option multiple (parce que jList est défini avant, vous pouvez choisir plusieurs options) lister.SesetsEledSeleddices (a);} e) {}} if (event.getsource () == btn4) {// int j; // for (j = 0; j <M.Length (); j ++) // {// if (hashtable.containsvalue (Integer.parseint (j) + "*") / hashTable.put (j, //}}} ValueChanged (événement ListSelectionEvent) {System.out.println (list.getSelectedIndex ());}}À travers ces deux exemples, avez-vous une certaine compréhension des méthodes de requête floue Java? J'espère que vous aimez l'article de l'éditeur et que vous continuez à le suivre!