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 に答える