Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Ткните_носом(ResultSet); / 14 сообщений из 14, страница 1 из 1
28.06.2007, 12:31:30
    #34625816
Foul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
Отбор записей по вхождению подстроки в одну из записей ResultSet.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
        String search = JOptionPane.showInputDialog(DP,"Cлово для поска:","Поиск...",JOptionPane.QUESTION_MESSAGE);
         if  (search!= null  & !search.equals("")) {
            String zapros = "SELECT rsa.Materials.Material_ID, rsa.Materials.Material_Name, rsa.Units.Unit_Short_Name " +
                    "FROM rsa.Materials, rsa.Units " +
                    "WHERE rsa.Materials.Material_ID > 0" +
                    "AND rsa.Materials.Unit_ID = rsa.Units.Unit_ID ORDER BY rsa.Materials.Material_Name";
            ResultSet rs = (ResultSet)Rassvet.GetResultSet(connect_r,zapros);
             try {
                DtmRassvet.setRowCount( 0 );         
                 while (rs.next()){
                    
                     if  (rs.getString("Material_Name").toLowerCase().indexOf(search.toLowerCase()) > - 1 ){
                        String Unit = rs.getString("Unit_Short_Name");
                         int  ID = rs.getInt("Material_ID");
                        DtmRassvet.addRow( new  Object[]{ID, null ,Name, null ,Unit});
                    }
                }
            }  catch  (SQLException ex){
                ex.printStackTrace();
            }  finally  {
                Rassvet.CloseResultSet(rs);
            }
При чтении ID записи
Код: plaintext
 int  ID = rs.getInt("Material_ID");
выдает ошибку:

java.sql.SQLException: [Microsoft][Диспетчер драйверов ODBC] Недопустимый индекс дескриптора
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6958)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7115)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(JdbcOdbc.java:3812)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(JdbcOdbcResultSet.java:5639)
at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(JdbcOdbcResultSet.java:582)

Помогите, пожалуйста, а то 3 часа бьюсь уже.
...
Рейтинг: 0 / 0
28.06.2007, 12:48:06
    #34625866
Semen Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
А может отказаться от имени и вытаскивать по индексу?
Код: plaintext
 int  ID = rs.getInt( 1 );
...
Рейтинг: 0 / 0
28.06.2007, 12:54:35
    #34625887
Foul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
Semen PopovА может отказаться от имени и вытаскивать по индексу?
Код: plaintext
 int  ID = rs.getInt( 1 );


Пытылся, имя точное. Тип соответствует. Просто где-то что-то не дописал. Запрос верен, возвращает все записи. Material_ID не пустое.
...
Рейтинг: 0 / 0
28.06.2007, 13:08:21
    #34625914
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
А почему бы
Код: plaintext
1.
2.
3.
4.
                     if  (rs.getString("Material_Name").toLowerCase().indexOf(search.toLowerCase()) > - 1 ){
                        String Unit = rs.getString("Unit_Short_Name");
                         int  ID = rs.getInt("Material_ID");
                        DtmRassvet.addRow( new  Object[]{ID, null ,Name, null ,Unit});
                    }
это неоформить в виде WHERE Material_Name like '%?%' ????????
Обатите внимание на common db utils. Значительно упрощает жизнь.
...
Рейтинг: 0 / 0
28.06.2007, 13:18:00
    #34625944
Foul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
ТимоНА почему бы
Код: plaintext
1.
2.
3.
4.
                     if  (rs.getString("Material_Name").toLowerCase().indexOf(search.toLowerCase()) > - 1 ){
                        String Unit = rs.getString("Unit_Short_Name");
                         int  ID = rs.getInt("Material_ID");
                        DtmRassvet.addRow( new  Object[]{ID, null ,Name, null ,Unit});
                    }
это неоформить в виде WHERE Material_Name like '%?%' ????????
Обатите внимание на common db utils. Значительно упрощает жизнь.

не умею пользоваться :(
...
Рейтинг: 0 / 0
28.06.2007, 13:22:58
    #34625960
Foul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
Без условия все работает. Само условие результат ловит, но не изымаются данные в нем. :(

Можно по подробнее о ТимоНWHERE Material_Name like '%?%' ????????
...
Рейтинг: 0 / 0
28.06.2007, 13:24:15
    #34625964
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
FoulОтбор записей по вхождению подстроки в одну из записей ResultSet.

Код: plaintext
1.
DtmRassvet.addRow( new  Object[]{ID, null ,Name, null ,Unit});

Меня вот эта строка смущает, попробуйте её закомментировать. Без неё будет работать?
...
Рейтинг: 0 / 0
28.06.2007, 13:29:39
    #34625974
Foul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
Garrick FoulОтбор записей по вхождению подстроки в одну из записей ResultSet.

Код: plaintext
1.
DtmRassvet.addRow( new  Object[]{ID, null ,Name, null ,Unit});

Меня вот эта строка смущает, попробуйте её закомментировать. Без неё будет работать?

До нее не доходит. Если без условия отбора то все пролетает на ура.
...
Рейтинг: 0 / 0
28.06.2007, 13:38:54
    #34626008
expp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
попробуйте обращаться к колонкам в том порядке как они идут в RS сначала rs.getInt("Material_ID") потом rs.getString("Material_Name") потом rs.getString("Unit_Short_Name");
точно помню, что этот недодрайвер не разрешал второй раз трогать колонку
...
Рейтинг: 0 / 0
28.06.2007, 13:39:10
    #34626009
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
GarrickМеня вот эта строка смущает, попробуйте её закомментировать. Без неё будет работать?
Ты стек посмотри, эта строка здесь не при чем
...
Рейтинг: 0 / 0
28.06.2007, 13:39:50
    #34626011
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
exppпопробуйте обращаться к колонкам в том порядке как они идут в RS сначала rs.getInt("Material_ID") потом rs.getString("Material_Name") потом rs.getString("Unit_Short_Name");
точно помню, что этот недодрайвер не разрешал второй раз трогать колонку
+1
...
Рейтинг: 0 / 0
28.06.2007, 13:40:12
    #34626013
Foul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
Всем огормное спс. Разобраля:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
            String zapros = "SELECT rsa.Materials.Material_ID, rsa.Materials.Material_Name, rsa.Units.Unit_Short_Name " +
                    "FROM rsa.Materials, rsa.Units " +
                    "WHERE rsa.Materials.Material_Name LIKE '%" + search + "%' " +
                    "AND rsa.Materials.Unit_ID = rsa.Units.Unit_ID ORDER BY rsa.Materials.Material_Name";
            ResultSet rs = (ResultSet)Rassvet.GetResultSet(connect_r,zapros);
             try {
                 while (rs.next()){
                    DtmRassvet.addRow( new  Object[]{rs.getInt("Material_ID"), null ,rs.getString("Material_Name"), null ,rs.getString("Unit_Short_Name")});
                }
            }  catch  (SQLException ex){

            }  finally  {
                Rassvet.CloseResultSet(rs);
            }

Получилось круто, т.к. клиенту поступают уже отсортированные записи.
...
Рейтинг: 0 / 0
28.06.2007, 13:45:19
    #34626032
Foul
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
exppпопробуйте обращаться к колонкам в том порядке как они идут в RS сначала rs.getInt("Material_ID") потом rs.getString("Material_Name") потом rs.getString("Unit_Short_Name");
точно помню, что этот недодрайвер не разрешал второй раз трогать колонку

Переставил, тоже работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
            String zapros = "SELECT rsa.Materials.Material_ID, rsa.Materials.Material_Name, rsa.Units.Unit_Short_Name " +
                    "FROM rsa.Materials, rsa.Units " +
                    "WHERE rsa.Materials.Material_ID > 0 " +
                    "AND rsa.Materials.Unit_ID = rsa.Units.Unit_ID ORDER BY rsa.Materials.Material_Name";
            ResultSet rs = (ResultSet)Rassvet.GetResultSet(connect_r,zapros);
             try {
                 while (rs.next()){
                    String ID = rs.getString("Material_ID");
                    String Name = rs.getString("Material_Name");                    
                     if  (Name.toLowerCase().indexOf(search.toLowerCase()) > - 1 ){
                        String Unit = rs.getString("Unit_Short_Name");
                        DtmRassvet.addRow( new  Object[]{ID, null ,Name, null ,Unit});
                    }
                }
            }  catch  (SQLException ex){
                ex.printStackTrace();
            }  finally  {
                Rassvet.CloseResultSet(rs);
            }

Всем еще раз огромное спс
...
Рейтинг: 0 / 0
28.06.2007, 13:46:56
    #34626041
ТимоН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ткните_носом(ResultSet);
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Ткните_носом(ResultSet); / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]