عندما نحتاج إلى تطوير طريقة للاستعلام عن قاعدة البيانات ، نواجه في كثير من الأحيان مشكلة: لا نعرف الشروط التي سيدخلها المستخدم ، فكيف يمكننا التعامل مع عبارات SQL حتى تتمكن الأساليب التي نطور من العمل بشكل طبيعي بغض النظر عن الشروط التي يقبلونها؟ في هذا الوقت ، حيث يمكن لقائمة "1 '=' 1 'Plus حل هذه المشكلة تمامًا. أقل هراء ، أضف الكود:
// fuzzy Query Method List Public List <Person> Query () {list <Person> list = new ArrayList <> () ؛ الاتصال con = null ؛ الماسح الضوئي SC = ماسح ضوئي جديد (System.in) ؛ System.err.println ("Enter Name:") ؛ اسم السلسلة = sc.nextline () ؛ System.err.println ("Enter ID:") ؛ معرف السلسلة = sc.nextline () ؛ System.err.println ("Enter Tel:") ؛ سلسلة tel = sc.nextline () ؛ System.err.println ("أدخل الجنس:") ؛ سلسلة الجنس = sc.nextline () ؛ String SQL = "SELECT ID ، NAME ، TEL ، SEX from students" // هنا هي الخدعة ، سلسلة الربط بشكل معقول + "حيث 1 = 1" ؛ قائمة <Object> list1 = new ArrayList <Object> () ؛ // استخدم حزمة Commons-lang if (stringUtils.isnotempty (name)) {sql += "and title like؟" ؛ list1.add ("٪" + name + "٪") ؛ } if (! stringUtils.isempty (id)) {sql += "ومحتوى مثل؟" ؛ list1.add ("٪" + id + "٪") ؛ } if (! stringUtils.isempty (tel)) {sql += "و addr like؟" ؛ list1.add ("٪" + tel + "٪") ؛ } حاول {con = dsutlis.getConnection () ؛ // بعد أن يتكون عبارة SQL ، يتم إنشاء كائن PST. ReparedStatement PST = con.preparestatement (SQL) ؛ // ضبط قيمة؟ لـ (int i = 0 ؛ i <list1.size () ؛ i ++) {pst.setObject (i+1 ، list.get (i)) ؛ } resultset rs = pst.executequery () ؛ بينما (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"). يساوي ("1")؟ "ذكر": "أنثى") ؛ list.add (p) ؛ } rs.close () ؛ pst.close () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {try {con.Close () ؛ } catch (sqlexception e) {E.PrintStackTrace () ؛ }} قائمة الإرجاع ؛ } التعليق التوضيحي:
1. يعمل الرمز أعلاه على قاعدة بيانات Oracle:
قم بإنشاء طلاب الطاولة (ID Varchar (32) ، Name Varchar (30) ، Tel Varcher (15) ، Sex char (1) ، stud_pk key (id)) ؛
2. استخدم فئات الأدوات للحصول على اتصال
3. بروسون هو جافابان
فيما يلي دليل لكيفية استخدام Java لجعل نتائج الاستعلام الغامضة
استيراد java.io.*؛ استيراد java.awt.*؛ استيراد java.awt.event.*؛ import javax.swing.event.*؛ import javax.swing.event.*؛ import javax.swing.filechooser. . BTN ؛ Private JButton BTN1 ؛ Private JButton BTN2 ؛ Private JButton BTN3 ؛ Private JButton BTN4 ؛ Private JFileChooser chooser ؛ Private JTextfield Textfield ؛ Map hashtable = new Hashtable () ؛ private int i = 0 ؛ MediaFrame () {Settitle ("Media") ؛ SetSize (600،500) ؛ Jmenubar Menu = New Jmenubar () ؛ setjmenubar (Menu) ؛ Jlabel Label = New Jlabel ("Query Song name:") JToolbar () ؛ M = New DefaultListModel () ؛ List = New JList (M) ؛ list.setFixedCellWidth (100) ؛ list.setselectionMode (listselectionmodel.multiple_interval_selection) ؛ list.addlistelectionlistener (this) ؛ jfilechooser () ؛ btn = new jbutton ("إضافة أغنية") ؛ btn.addActionListener (this) ؛ btn1 = new jbutton ("delete song") ؛ btn1.addActionener (this) ؛ btn2 = new jbutton ("leven list") ؛ المسار ") ؛ btn3 Gridlayout (5،1)) ؛ Panel.Add (BTN) ؛ Panel.Add (BTN1) ؛ Panel.Add (BTN2) ؛ Panel.Add (BTN3) ؛ Panel.Add (BTN4) ؛ TB.SetLayout (جديد Gridlayout (1،2)) ؛ tb.add (pane) ؛ tb.add (لوحة) ؛ إضافة (tb ، borderlayout.west) ؛} public void actionperformed (actionevent event) {if (event.getsource () == btn) {i ++ ؛ النتيجة = choloSer.ShowOpendialog (mediaFrame.This) ؛ if (result == jFileChoOser.approve_option) {system.out.println (i) ؛ string name = chooser.getseledfile (). name1 = name.substring (str2+1 ، str1.length ()) ؛ // اعتراض جميع الأوتار قبل الأخير "/" int str3 = name1.lastindexof (". hashtable.put (i ، name2) ؛ M.Add (0 ، hashtable.get (i)) ؛ system.out.println (hashtable) ؛}} if (event.getSource () == btn1) {m.RemoveElement (listselyedvalue ()) ؛ system.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 ()] ؛ name = textfield.getText () ؛ system.out.println (m.getSize ()) ؛ لـ (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]) ؛ e) {}} if (event.getSource () == btn4) {// int j ؛ // for (j = 0 ؛ j <m.length () ؛ j ++) // {// if (hashtable.containsvalue (integer.parseint (j)+"*") valuechanged (levelseSelectionevent event) {system.out.println (list.getSelectedIndex ()) ؛}}من خلال هذين المثالين ، هل لديك فهم معين لطرق الاستعلام Java Fuzzy؟ أتمنى أن تعجبك مقال المحرر وتستمر في متابعته!