一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java模糊查詢方法詳解

Java模糊查詢方法詳解

2020-04-22 11:27java教程網 JAVA教程

這篇文章主要為大家詳細介紹了Java模糊查詢方法的實現,實例教你如何用Java做模糊查詢結果,感興趣的小伙伴們可以參考一下

當我們需要開發一個方法用來查詢數據庫的時候,往往會遇到這樣一個問題:就是不知道用戶到底會輸入什么條件,那么怎么樣處理sql語句才能讓我們開發的方法不管接受到什么樣的條件都可以正常工作呢?這時where '1'='1'加上list就可以完美解決這個問題了,廢話少說,上代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// 模糊查詢方法
  public List<person> query() {
    List<person> list = new ArrayList<>();
    Connection con = null;
    Scanner sc = new Scanner(System.in);
    System.err.println("enter name:");
    String name = sc.nextLine();
    System.err.println("enter id:");
    String id = sc.nextLine();
    System.err.println("enter tel:");
    String tel = sc.nextLine();
    System.err.println("enter sex:");
    String sex = sc.nextLine();
    String sql = "select id,name,tel,sex from students "
        // 技巧在此,合理拼接字符串
        + "where 1=1";
    List<Object> list1 = new ArrayList<Object>();
    //使用 commons-lang包
    if (StringUtils.isNotEmpty(name)) {
      sql += " and title like ?";
      list1.add("%" + name + "%");
    }
 
    if (!StringUtils.isEmpty(id)) {
      sql += " and content like ?";
      list1.add("%" + id + "%");
    }
 
    if (!StringUtils.isEmpty(tel)) {
      sql += " and addr like ?";
      list1.add("%" + tel + "%");
    }
    try {
      con = DSUtlis.getConnection();
      // SQL語句組成完成以后,就生成pst對象
      PreparedStatement pst = con.prepareStatement(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();
    } finally {
      try {
        con.close();
      } catch (SQLException e) {
        e.printStackTrace();
      }
    }
    return list;
  }

注解:
1、以上代碼操作一個Oracle數據庫:

?
1
2
3
4
5
6
7
create table students(
id varchar(32),
name varchar(30),
tel varcher(15),
sex char(1),
constraint stud_pk primary key(id)
);

2、使用工具類獲取Connection
3、proson是一個javabean

下面教大家如何用Java做模糊查詢結果

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.filechooser.*;
import java.util.*;
import java.util.regex.*;
 
 
 
//模糊查詢
 
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 int i=0;
int s=0;
 
public MediaFrame()
{
setTitle("Media");
setSize(600,500);
 
JMenuBar menu=new JMenuBar();
setJMenuBar(menu);
 
JLabel label=new JLabel("查詢的歌曲名:");
textField=new JTextField();
menu.add(label);
menu.add(textField);
 
JToolBar TB=new 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);
 
chooser=new JFileChooser();
 
btn=new JButton("添加歌曲");
btn.addActionListener(this);
 
btn1=new JButton("刪除歌曲");
btn1.addActionListener(this);
 
btn2=new JButton("清空列表");
btn2.addActionListener(this);
 
btn3=new JButton("查找曲目");
btn3.addActionListener(this);
 
btn4=new JButton("排序");
btn4.addActionListener(this);
 
JPanel panel=new JPanel();
 
panel.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(panel);
 
add(TB,BorderLayout.WEST);
}
 
public void actionPerformed(ActionEvent event)
{
 
if (event.getSource()==btn)
{
i++;
chooser.setCurrentDirectory(new File("."));
 
int 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());
 
//截取最后一個"/"之前的所有字符串
 
 
 
int str3=name1.lastIndexOf(".");
 
String 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.println(m);
}
 
if (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 name=textField.getText();
 
System.out.println(m.getSize());
 
for (j=1;j<=m.getSize();j++)
{
Pattern p=Pattern.compile("^"+name+"+");//正則表達式選取以你填的單詞為首的所有查詢結果
Matcher match=p.matcher((String)hashtable.get(j));
 
if (match.find())
{
s++;
 
 
 
//記錄索引結點到數組中a[]中
a[s]=a[s]+m.getSize()-j;
System.out.println(hashtable.get(j));
System.out.println(a[s]);
}
 
}
 
 
 
//可以選擇不多個選項(因為前面設置了JList可以多項選擇)
 
list.setSelectedIndices(a);
 
}
catch (Exception e)
{
 
}
 
}
 
if (event.getSource()==btn4)
{
 
//int j;
//for (j=0;j<m.length();j++)
//{
//if (hashtable.containsValue(Integer.parseInt(j)+"*")
//hashtable.put(j,
//}
 
}
 
}
 
public void valueChanged(ListSelectionEvent event)
{
System.out.println(list.getSelectedIndex());
}
 
}

通過這兩個實例大家是否對java模糊查詢方法有了一定的了解,希望大家喜歡小編的文章,繼續關注哦!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 手机在线免费观看日本推理片 | 交换朋友夫妇3中文字幕 | 日韩成人在线网站 | 欧美sex另类孕妇 | 亚洲视频免 | 亚洲成人第一页 | 亚飞与亚基国语1080p在线观看 | 国产在线看片网站 | 5g996未满十八 | 风间由美m3u8在线 | 国产精品色图 | 日韩 国产 欧美 精品 在线 | 日韩成片| 国产精品久久久久这里只有精品 | 大吊操 | 男女拍拍拍免费视频网站 | 国产精品国产高清国产专区 | 精品午夜久久网成年网 | 1024视频色版在线网站 | 日韩免费高清完整版 | 99精品久久99久久久久久 | 无人在线视频高清免费观看动漫 | 日韩理论片在线看免费观看 | 天天操天天射天天色 | 桥本有菜在线四虎福利网 | 久久综合亚洲色hezyo | 日韩成人av在线 | 日本中文字幕在线视频站 | 国产精品久久亚洲一区二区 | 日本福利视频网站 | 国产美女在线一区二区三区 | 图片专区小说专区卡通动漫 | 欧美高清无砖专区欧美精品 | 精品亚洲欧美中文字幕在线看 | 国产精品嫩草影院一二三区入口 | 色噜噜 男人的天堂在线观看 | 狠狠香蕉 | 日韩欧美一区二区在线观看 | 久久精品国产免费播高清无卡 | 99视频九九精品视频在线观看 | 美女靠逼免费视频 |