Cuando necesitamos desarrollar un método para consultar la base de datos, a menudo encontramos un problema: no sabemos qué condiciones ingresará el usuario, entonces, ¿cómo podemos manejar las declaraciones SQL para que los métodos que desarrollamos puedan funcionar normalmente sin importar qué condiciones acepten? En este momento, donde la lista '1' = '1' Plus puede resolver perfectamente este problema. Menos tonterías, agregue el código:
// Método de consulta difusa Lista pública <Oller> Query () {List <Oll> list = new ArrayList <> (); Conexión con = nulo; Escáner sc = new Scanner (System.in); System.err.println ("Ingrese el nombre:"); Name de cadena = sc.nextline (); System.err.println ("Ingrese ID:"); String id = sc.nextline (); System.err.println ("Ingrese Tel:"); Cadena Tel = sc.nextline (); System.err.println ("Ingrese sexo:"); String Sex = sc.nextline (); String sql = "Seleccione ID, nombre, tel, sexo de los estudiantes" // Aquí está el truco, con una cadena de empalme razonable + "donde 1 = 1"; List <S Object> list1 = new ArrayList <Sectus> (); // Use el paquete Commons-Lang if (StringUtils.ISNotEmpty (name)) {sql += "y title Like?"; list1.add ("%" + name + "%"); } if (! StringUtils.isEmpty (id)) {sql += "¿Y content?"; list1.add ("%" + id + "%"); } if (! StringUtils.isEmpty (Tel)) {sql += "¿y addri me gusta?"; list1.add ("%" + tel + "%"); } try {con = dsutlis.getConnection (); // Después de que se compone la instrucción SQL, se genera un objeto PST. Preparado PST = Con.PrepareStatement (SQL); // establecer el valor de? for (int i = 0; i <list1.size (); i ++) {pst.setObject (i+1, list.get (i)); } ResultSet rs = pst.executeQuery (); while (rs.next ()) {persona p = nueva persona (); p.setid (rs.getString ("id")); p.setName (rs.getString ("nombre")); p.settel (rs.getString ("tel")); p.setSex (rs.getString ("sexo"). Equals ("1")? "Hombre": "mujer"); list.add (p); } rs.close (); pst.close (); } catch (Exception e) {E.PrintStackTrace (); } finalmente {try {con.close (); } Catch (Sqlexception e) {E.PrintStackTrace (); }} lista de retorno; } anotación:
1. El código anterior funciona en una base de datos Oracle:
Crear estudiantes de tabla (ID VARCHAR (32), nombre Varchar (30), Tel Varcher (15), Sex Char (1), Restrict Stud_pk Key (ID));
2. Use clases de herramientas para obtener conexión
3. Proson es un Javabean
A continuación se muestra una guía de cómo usar Java para obtener resultados de consulta difusa
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.*; // consulta flanado public class Media {public static void main (string args []) {jframe frame = new MediaFrame (); frame.setDefaultCloseOperation (jframe.exit_on_close); frame.SetVisible (true);} classFrame extiende jframe jframe implements ActionListener, listSelectionListener {privado jlistm; privado jlist LIST; privado; JButton Btn; privado jButton Btn1; privado jbutton btn2; private jbutton btn3; private jbutton btn4; privado jfilechooser elige; private jtextfield textfield; map hashtable = new Hashtable (); privado int i = 0; int s = 0; público público MediaFrame () {setTitle ("Media"); setSize (600,500); jMenubar menú = new JMenubar (); setJMenubar (menú); jlabel etiqueta = new jlabel ("Nombre de la canción de consulta:"); Textfield = new JTeTfieldfield (); Menu.add (etiqueta); menú JToolBar (); m = new DefaultListModel (); list = new JList (m); list.setFixedCellWidth (100); list.setselectionMode (listelectionModel.multiple_interval_selection); list.AddListSelectionListener (this); jscrollpane = new jscrollpane (list = list = newMeer = newdListen Jfilechooser (); btn = new JButton ("Agregar canción"); btn.addactionListener (this); btn1 = new jButton ("delete canción"); btn1.addactionListener (this); btn2 = new jButton ("clear list"); btn2 Track "); btn3.addactionListener (this); btn4 = new JButton (" clasificación "); btn4.addactionListener (this); jpanel panel = new jpanel (); panel.setLayout (nuevo GridLayout (5,1)); panel.add (btn); panel.add (btn1); panel.add (btn2); panel.add (btn3); panel.add (btn4); tb.setLayout (nuevo GridLayout (1,2)); tb.add (panel); tb.add (panel); add (tb, borderLayout.west);} public void actionperformed (ActionEvent Event) {if (event.getSource () == Btn) {i ++; Chooser.setCurrentDirectory (nuevo archivo ("")); intencionamiento de resultado = Chooser.ShowOpendialog (MediaFrame.This); if (result == JFilechooser.Approve_Option) {System.out.println (i); String name = Chooser.getSeledFile (). GetPath (); String Str1 = name; int str2 = name.lastindexof ("//"); String name1 = name.substring (str2+1, str1.length ()); // intercepta todas las cadenas antes de la última "/" int str3 = name1.lastIndexof ("."); cadena name2 = name1.substring (0, str3); // Intercept todos los sufijos de cadena después de "". ".". hashtable.put (i, name2); m.add (0, hashtable.get (i)); system.out.println (hashtable);}} if (event.getSource () == btn1) {m.removeelement (list.getSelectedValue ()); system.println (m);} si (event.getSource () == btn2) {system.out.println (m); i = 0; hashtable.clear (); m.cLear ();} if (event.getSource () == btn3) {int [] a = new int [m.getSize ()]; intit {int j; string name = textfield.gettext (); system.out.println (m.getSize ()); for (j = 1; j <= m.getSize (); j ++) {Pattern P = Pattern.compile ("^"+Name+"+"); // La expresión regular selecciona todos los resultados de consultas encabezados por la palabra que se llena en Matcher Matcher = p.matcher ((String). (match.find ()) {S ++; // registra el nodo de índice en la matriz a [] a [s] = a [s]+m.getSize ()-j; system.out.println (hashtable.get (j)); system.out.println (a [s]);}} // No puede seleccionar múltiples opciones (porque jlist se establece antes, puede elegir múltiples opciones. e) {}} if (event.getSource () == btn4) {// int j; // for (j = 0; j <m.length (); j ++) // {// if (hashtable.containsvalue (integer.parseint (j)+"*") // hashtable.put (j,/}}}}} valueChanged (listSelectionEvent Event) {System.out.println (list.getSelectedIndex ());}}A través de estos dos ejemplos, ¿tiene una cierta comprensión de los métodos de consulta difusa de Java? ¡Espero que te guste el artículo del editor y continúe siguiéndolo!