JAVA文字框根據輸入內容自動模糊查詢(動態)
阿新 • • 發佈:2019-01-23
要做到文字框能根據自己輸入的值去查詢資料庫的東西需要一些準備,思路就是要當按下文字框的時候就會彈出一個表格,表格就是根據你輸入的值去查詢資料庫資料(對文字框增加刪除操作都可以動態查詢),然後就是要當查詢到了的資料需要雙擊表格需要的內容行把表格介面設定不可見,大致的思路就是這樣。
//預設表格模版的設定,新增表頭和設定表格不可編輯
dtm3=new DefaultTableModel(columnNames,0);
table3=new JTable(dtm3){
public boolean isCellEditable(int row, int column)
{
return false;
}//表格不允許被編輯 }
};
String sql="select MrId,PaId,PaName,DeptName from Medical_records" ;
databaseSearch1(sql,4);//當表格被顯示時候即把資料庫的所有資料調出來
JScrollPane5.setViewportView(table3);//給表格新增滾動條
panel1.add(JScrollPane5);
JScrollPane5.setBounds(10 , 0, 400,100);
JScrollPane5.setVisible(false);
//tx1文字框新增事件,根據文字框內容的改變模糊查詢到資料庫內容,顯示到表格中
tx1.getDocument().addDocumentListener(new DocumentListener()
{
@Override
public void removeUpdate(DocumentEvent e) {
updata_combobox();
}
@Override
public void insertUpdate(DocumentEvent e) {
updata_combobox();
}
@Override
public void changedUpdate(DocumentEvent e) {
updata_combobox();
}
private void updata_combobox(){
String s1=null;
s1=tx1.getText(); //根據S1的內容模糊查詢資料庫對應的資料
JScrollPane5.setVisible(true);//JScrollPane5是一個表格滾動條,讓表格顯示可見
String sql="select MrId,PaId,PaName,DeptName from Medical_records where MrId like '%"+s1+"%'";//SQL語句
databaseSearch1(sql,5); //把資料新增到表格中
}
});
//把資料新增到表格中
private void databaseSearch1(String sql, int i) {
// TODO Auto-generated method stub
Connection con;
con=connect.getConnection();
ResultSet rs;
try{
int rowcount = dtm3.getRowCount() - 1;
if (rowcount != -1) {
for (int i1 = rowcount; i1 >= 0; i1--) {
dtm3.removeRow(i1); // 刪除Jtable中的所有行
}
dtm3.setRowCount(0); // 將Jtable中的行數設為零
}
Statement stmt=con.createStatement();
rs=stmt.executeQuery(sql);
String[] data = new String[4];
while (rs.next()) {
for (int j = 1; j <= 4; j++) {
data[j - 1] = rs.getString(j); // 取出資料庫中的陣列裝載到陣列中
}
dtm3.addRow(data); // 在Jtabl
}
con.close();
//設定表格隔行背景色(隔行背景色不同)
}catch(Exception err){
}
}
後面還需要給文字框新增事件以及表格的雙擊事件把表格檢視設定不可見等就沒貼程式碼了,自己琢磨,相信你行的,以上程式碼有不懂可以問問我,互相學習,菜鳥一枚,有不對的地方就直說。