របៀបសរសេរ Search Engine ស្វែងរកទិន្នន័យក្នុង Database
បន្តមេរៀុនទាក់ទងទៅនឹង Merge Statement សម្រាប់ Insert និង Update នៅលើប៊ូតុង Save តែមួួយកាលពីលើកមុន ។ ពេលនេះខ្ញុំចង់បង្ហាញអ្នក
អំពីការស្វែងរកទិន្នន័យតាមលក្ខណៈ Search Engine នូវទិន្នន័យរបស់ Customer
តាមរយៈ CustomerId, FullName, Address, Phone, Email ដូចខាងក្រោម :
១. បន្ថែម TextField មួយដាក់ឈ្មោះ txt_Search ដោយ Right Click លើ TextField -> Change VariableName ដើម្បីឲ្យគេ អាចវាយតូអក្សរ សែ្វងរកទិន្នន័យដែលគេស្វែងរក (ដូចរូប)
២.ដាក់ Event លើ txt_Search TextField ដោយ Right Click ដូចរូប ហើយជ្រើសរើសយក Event KeyReleased
៣. សរសេរកូដ ដើម្បី Search រកទិន្នន័យ នៅពេលដែលគេកំពុងវាយ Key តួអក្សរ
private void txt_searchKeyReleased(java.awt.event.KeyEvent evt) {
try {
tbl_customer.setModel(new ResultSetTableModel(DBConnection.connector(), query(txt_search.getText())));
} catch (SQLException ex) {
Logger.getLogger(CustomerForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String query(String txtSearch){
String sql = "Select * from tbl_Customer where CustomerID Like '%"+txtSearch+" %' ";
sql += " Union Select * from tbl_Customer where FullName Like '%"+txtSearch+" %' ";
sql += " Union Select * from tbl_Customer where Address Like '%"+txtSearch+" %' ";
sql += " Union Select * from tbl_Customer where Phone Like '%"+txtSearch+" % ' ";
sql += " Union Select * from tbl_Customer where Email Like '%"+txtSearch+" %' ";
return sql;
}
try {
tbl_customer.setModel(new ResultSetTableModel(DBConnection.connector(), query(txt_search.getText())));
} catch (SQLException ex) {
Logger.getLogger(CustomerForm.class.getName()).log(Level.SEVERE, null, ex);
}
}
private String query(String txtSearch){
String sql = "Select * from tbl_Customer where CustomerID Like '%"+txtSearch+" %' ";
sql += " Union Select * from tbl_Customer where FullName Like '%"+txtSearch+" %' ";
sql += " Union Select * from tbl_Customer where Address Like '%"+txtSearch+" %' ";
sql += " Union Select * from tbl_Customer where Phone Like '%"+txtSearch+" % ' ";
sql += " Union Select * from tbl_Customer where Email Like '%"+txtSearch+" %' ";
return sql;
}
នៅក្នុង
Event KeyReleased ខាងលើ ខ្ញុំបាន setModel ឲ្យ tbl_Customer (JTable)
ដើម្បីបង្ហាញទិន្នន័យនៅពេលអ្នកវាយ Keyword ស្វែងរកទិន្នន័យ ដោយហៅ Method query(String txtSearch) ដែល return ជា String
sql = " Select * from tbl_Customer where CustomerID Like '%"+txtSearch+"%' " Union Select * from tbl_Customer where FullName Like ' %"+txtSearch+"%' " Union Select * from tbl_Customer where Address Like ' % "+txtSearch+"%' " Union Select * from tbl_Customer where Phone Like ' %"+txtSearch+"%' " Union Select * from tbl_Customer where Email Like '%"+txtSearch+"% ' ";
ដោយក្នុងនោះ យើងបានសរសេរលក្ខខណ្ឌ Search តាមរយៈ CustomerID, FullName, Address, Email និង Phone ដោយប្រើ Keyword LIKE និង UNION ។ តើអ្វីជា LIKE ? អ្វីជា UNION?
១. LIKE គឺជា operator មួយ ដែលគេប្រើដើម្បី Search នូវ តួអក្សរជាក់លាក់នៅក្នុង Column នៃ Table។
ទំរង់ទូទៅ (Syntax) :
SELECT column(s) FROM TableName WHERE coumnName LIKE pattern
- Pattern អាចជាតម្លៃ ជាតួអក្សរ(Character) ឬក៏ជាលំដាប់នៃតួអក្សរ(String)ដែលឋិតនៅក្នុង '% .......%' ។
ឧទាហរណ៍ទី១៖
Select * from tbl_Customer where CustomerName LIKE '%I%'
Selection នេះ មានន័យថាអ្នកចង់ ស្វែងរកទិន្នន័យរបស់ Customer ទាំងអស់ ដែលមានឈ្មោះជា តួអក្សរ I មិនថានៅខាងដើម កណ្តាល ឬ ចុងនៃឈ្មោះ
ឧទាហរណ៍ទី២៖
Select * from tbl_Customer where CustomerName LIKE '_I%'
Selection
នេះ មានន័យថាអ្នកចង់ ស្វែងរកទិន្នន័យរបស់ Customer ទាំងអស់
ដែលមានឈ្មោះតួអក្សរ I នៅខ្ទង់ទី ២ នៃឈ្មោះ។ ដែលសញ្ញា _ គឺជាបញ្ជាក់ពី មួយតួអក្សរ ។
២. UNION គឺជា Keyword មួយដែលគេប្រើ ដើម្បីលុប ទិន្នន័យនៃ row ដែលស្ទួននៅ Result set រវាង Select Statement ពីរ ឬច្រើន ។ ប៉ុន្តែ បើអ្នកចង់បង្ហាញទិន្នន័យដែលស្ទួន អ្នកអាចប្រើ UNION ALL ។
ទំរង់ទូទៅ (Syntax) :
SELECT column1, column2 FROM TABLE1
UNION
SELECT column1, column2 FROM TABLE2
SELECT column1, column2 FROM TABLE2
នៅពេលដែលអ្នកសរសេរនូវ
query ដោយប្រើ UNION អ្នកត្រូវប្រាកដថា Selection statement
ត្រូវតែមានចំនួន Column និង Data type នៃ column ត្រូវតែដូចគ្នា ។