1

我创建了一个显示在 中的数据库JTable,我想从中搜索一个值JTable以防不区分大小写。代码如下!

String sql = "select * from stock where Model=?" ;
       pst = conn.prepareStatement(sql);
       pst.setString(1, txt_search.getText());
       rs = pst.executeQuery();
       if(rs.next()){
            String add0 = rs.getString("Sr");
            txt_sr.setText(add0);
            String add1 = rs.getString("Code");
            txt_code.setText(add1);
            String add2 = rs.getString("Brand");
            txt_brand.setText(add2);
            String add3 = rs.getString("Type");
            txt_type.setText(add3);
            String add4 = rs.getString("Model");
            txt_model.setText(add4);
            String add5 = rs.getString("CodePrice");
            txt_cPrice.setText(add5);
            String add6 = rs.getString("RetailPrice");
            txt_rPrice.setText(add6);
            for(int i=0;i<table_stock.getRowCount();i++) {
            if(table_stock.getValueAt(i, 0).equals(Integer.valueOf(txt_sr.getText()))) {
            table_stock.setRowSelectionInterval(i, i);
            break;
            }
            }
        }

它可以正确搜索,但是当输入字符时,因为这些字符以大写或小写形式存储,我只想在任何情况下输入并获取搜索结果,无论它是在哪种情况下存储的!

谢谢

4

2 回答 2

1

我从来没有使用过 SQLlite,但我在这里很紧张,你能把两者都转换成小写比较吗?

String sql = "select * from stock where LOWER(Model)=?" ;
pst = conn.prepareStatement(sql);
pst.setString(1, txt_search.getText().toLowerCase());
于 2013-09-08T20:16:58.963 回答
0

您可以使用COLLATE 运算符进行不区分大小写的比较:

sql = "SELECT * FROM stock WHERE model = ? COLLATE NOCASE";

或者,使用LIKE 运算符使用通配符进行不区分大小写的搜索;如果要搜索前缀,通常会使用此方法:

sql = "SELECT * FROM stock WHERE model LIKE ?";
pst.setString(1, txt_search.getText() + '%');

请注意,为了能够将索引用于不区分大小写的搜索,您也必须将其声明为:

CREATE INDEX model_ci_idx ON stock(model COLLATE NOCASE);
于 2013-09-09T07:12:13.273 回答