powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ткните_носом(ResultSet);
14 сообщений из 14, страница 1 из 1
Ткните_носом(ResultSet);
    #34625816
Foul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отбор записей по вхождению подстроки в одну из записей 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
Ткните_носом(ResultSet);
    #34625866
Semen Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может отказаться от имени и вытаскивать по индексу?
Код: plaintext
 int  ID = rs.getInt( 1 );
...
Рейтинг: 0 / 0
Ткните_носом(ResultSet);
    #34625887
Foul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Semen PopovА может отказаться от имени и вытаскивать по индексу?
Код: plaintext
 int  ID = rs.getInt( 1 );


Пытылся, имя точное. Тип соответствует. Просто где-то что-то не дописал. Запрос верен, возвращает все записи. Material_ID не пустое.
...
Рейтинг: 0 / 0
Ткните_носом(ResultSet);
    #34625914
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы
Код: 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
Ткните_носом(ResultSet);
    #34625944
Foul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ТимоНА почему бы
Код: 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
Ткните_носом(ResultSet);
    #34625960
Foul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Без условия все работает. Само условие результат ловит, но не изымаются данные в нем. :(

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

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

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

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

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

До нее не доходит. Если без условия отбора то все пролетает на ура.
...
Рейтинг: 0 / 0
Ткните_носом(ResultSet);
    #34626008
expp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуйте обращаться к колонкам в том порядке как они идут в RS сначала rs.getInt("Material_ID") потом rs.getString("Material_Name") потом rs.getString("Unit_Short_Name");
точно помню, что этот недодрайвер не разрешал второй раз трогать колонку
...
Рейтинг: 0 / 0
Ткните_носом(ResultSet);
    #34626009
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickМеня вот эта строка смущает, попробуйте её закомментировать. Без неё будет работать?
Ты стек посмотри, эта строка здесь не при чем
...
Рейтинг: 0 / 0
Ткните_носом(ResultSet);
    #34626011
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exppпопробуйте обращаться к колонкам в том порядке как они идут в RS сначала rs.getInt("Material_ID") потом rs.getString("Material_Name") потом rs.getString("Unit_Short_Name");
точно помню, что этот недодрайвер не разрешал второй раз трогать колонку
+1
...
Рейтинг: 0 / 0
Ткните_носом(ResultSet);
    #34626013
Foul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем огормное спс. Разобраля:
Код: 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
Ткните_носом(ResultSet);
    #34626032
Foul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
Ткните_носом(ResultSet);
    #34626041
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ткните_носом(ResultSet);
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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