Когда нам нужно разработать метод для запроса базы данных, мы часто сталкиваемся с проблемой: мы не знаем, в какие условия будет введен пользователь, так как мы можем обрабатывать операторы SQL, чтобы методы, которые мы разрабатываем, могли работать нормально независимо от того, какие условия они принимают? В настоящее время список «1» = '1' плюс может полностью решить эту проблему. Меньше чепухи, добавьте код:
// Метод нечеткого запроса публичный список <person> Query () {list <derss> list = new ArrayList <> (); Соединение con = null; Сканер SC = новый сканер (System.in); System.err.println («Введите имя:»); String name = sc.nextline (); System.err.println («Введите ID:»); String id = sc.nextline (); System.err.println («Введите Tel:»); String tel = sc.nextline (); System.err.println («Введите Sex:»); String sex = sc.nextline (); String sql = "Выберите идентификатор, имя, тел, секс от студентов" // Вот трюк, разумная сплайсинг строки + ", где 1 = 1"; Список <object> list1 = new ArrayList <object> (); // Использовать пакет Commons-Lang if (stringUtils.isnotempty (name)) {sql += "и заголовок как?"; list1.add ("%" + name + "%"); } if (! stringUtils.isempty (id)) {sql += "и содержание как?"; list1.add ("%" + id + "%"); } if (! stringUtils.isempty (tel)) {sql += "и addr like?"; list1.add ("%" + tel + "%"); } try {con = dsutlis.getConnection (); // После составления оператора SQL генерируется объект PST. Подготовленное Statatement PST = con.PreArestatement (SQL); // Установить значение? for (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»)? «Мужчина»: «Женщина»); list.add (p); } rs.close (); pst.close (); } catch (Exception e) {e.printstackTrace (); } наконец {try {con.close (); } catch (sqlexception e) {e.printstacktrace (); }} return List; } Аннотация:
1. Приведенный выше код работает в базе данных Oracle:
Создание таблицы студентов (ID VARCHAR (32), имя VARCHAR (30), TEL VARCHER (15), Sex char (1), Constraint stud_pk Primary Key (ID));
2. Используйте классы инструментов, чтобы получить соединение
3. Proon - это Javabean
Ниже приведено руководство о том, как использовать Java, чтобы сделать нечеткие результаты запроса
Импорт java.io.*; импортировать java.awt.*; импортировать java.awt.event.*; импорт javax.swing.event.*; импорт javax.swing.event.*; import javax.swing.filechooser.*; импорт java.util.*; import java.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 extends JFrame implements ActionListener,ListSelectionListener{private JList list;private DefaultListModel m;private JButton btn; Private Jbutton Btn1; Private Jbutton Btn2; Private Jbutton Btn3; Private Jbutton Btn4; Private Jfilechooser Chooser; Private Jtextfield Textfield; Map Hashtable = new Hashtable (); Private I = 0; int s = 0; public; MediaFrame () {settitle ("media"); setSize (600,500); Jmenubar Menu = new jmenubar (); setjmenubar (меню); jlabel label = new jlabel ("query song name:"); textfield = new jtextfield (); menu.add (label); Jtoolbar (); m = new deflectlistmodel (); list = new jlist (m); list.setfixedcellwidth (100); list.setselectionmode (listselectionmodel.multiple_interval_selection); list.addlistselectionlection (this); jscrollpane pane = new jscrollpane (newscrollpane (= jscrollpane = new jscrollpane); Jfilechooser (); btn = new jbutton ("добавить песню"); btn.addactionListener (это); btn1 = new jbutton ("удалить песню"); btn1.addactionListener (this); btn2 = new jbutton ("чистый список"); btn2.addactionLister (this); Трек "); btn3.addactionListener (this); btn4 = new jbutton (" сортировка "); btn4.addactionListener (это); JPanel panel = new jPanel (); panel.setLayout (новый 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 (панель); добавить (tb, borderlayout.west);} public void actionperformed (overevent event) {if (event.getSource () == btn) {i ++; choaser.setCurrentDirectory (new File ("."); result = chooser.showopendialog (mediaframe.tis); 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 ()); // Intercept Все строки перед последним "/" int str3 = name1.lastIndexof ("."); строка name2 = name1.substring (0, str3); // все суффиксы строки после "." hashtable.put (i, name2); M.Add (0, hashtable.get (i)); System.out.println (hashtable);}} if (event.getSource () == btn1) {m.RemoveElement (list.getSelectedValue ()); System.out.out.Out.Out.Out.Out.Out.Out.out.Out.Out.out.Out.Out.Out. (Event.getSource () == btn2) {System.out.println (m); i = 0; hashtable.clear (); m.clear ();} if (event.getSource () == btn3) {int [] a = new int [m.getSize ()]; name = textfield.getText (); System.out.println (m.getSize ()); for (j = 1; j <= m.getSize (); j ++) {pattern p = pattern.compile ("^"+name+"+"); // Регулярное выражение выбирает все результаты запроса. (match.find ()) {s ++; // Записывают узел индекса в массив a [] a [s] = a [s]+m.getsize ()-j; system.out.println (hashtable.get (j)); System.out.println (a [s]);}} // Вы не можете выбрать несколько параметров (потому что jlist установлен ранее, вы можете выбрать несколько вариантов); e) {}} if (event.getSource () == btn4) {// int j; // for (j = 0; j <m.length (); j ++) // {// if (hashtable.containsvalue (integer.parseint (j)+"*") // hashtable.put (j, //}}}}}}}} valueChanged (sictelectionevent event) {System.out.println (list.getSelectedIndex ());}}Через эти два примера у вас есть определенное понимание методов нечетких запросов Java? Я надеюсь, что вам понравится статья редактора, и они продолжили ее следовать!