powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / ProgressMonitorInputStream - нужна помощь
12 сообщений из 12, страница 1 из 1
ProgressMonitorInputStream - нужна помощь
    #33634972
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помогите пожалуйста разобраться с потоками.
Мне надо обновить записи в таблице.
Так как записей много, то запускаю поток.

На команде st.executeUpdate(update) программа стоит на месте и ничего не делает. Без апдейта работает отлично.


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
 public   class  UpdateTable  extends  JFrame
{
      public  UpdateTable(Connection con,String user)
     {
         connect  = con;
         username = user;
          try  {
                openFile();
         }  catch  (IOException e) {
             e.printStackTrace();
         }
     }
     public   static   void  main(String[] args)
    {
       String dbUrl    ="jdbc.url=jdbc:oracle:thin:@...";
       String user     ="user";
       String password ="password";
       Connection connect =  null ;
        try 
       {
            Class .forName ("oracle.jdbc.driver.OracleDriver");
           connect = DriverManager.getConnection(dbUrl,user,password);
           connect.setAutoCommit(true);    
       }
        catch  (Exception e)
       { }
        new  UpdateTable(connect,user);
    }

    public   void  openFile()  throws  IOException
   {
        String path="";
        File pathName =  new  File   ("C:\\IN");
        pathName.mkdirs();
        path = pathName.getAbsolutePath();
        JFileChooser chooser =  new  JFileChooser(path);
        chooser.updateUI();

        chooser.setFileFilter(
                 new  javax.swing.filechooser.FileFilter()
                {
                     public   boolean  accept(File f)
                    {
                        String fname = f.getName().toLowerCase();
                         return  fname.endsWith(".txt") || f.isDirectory();
                    }
                     public  String getDescription()
                    {
                         return  "Текстові файли";
                    }
                });
        chooser.setDialogTitle("Виберіть потрібний файл");
         int  status = chooser.showOpenDialog( this );
         if  (status != JFileChooser.APPROVE_OPTION)
        {
             return ;
        }
         final  File f = chooser.getSelectedFile();
        FileInputStream fileIn =  new  FileInputStream(f);
        ProgressMonitorInputStream progressIn =
                new  ProgressMonitorInputStream( this ,"Зчитується файл "+f.getName(), fileIn);
        InputStreamReader inReader =  new  InputStreamReader(progressIn);
         final  BufferedReader in =  new  BufferedReader(inReader);

        Thread readThread =  new  Thread()
        {
             public   void  run()
            {
                 updateTable(in,f.getName());
            }
        };
        readThread.start();
    }
     public   void  updateTable(BufferedReader in,String f)
    {
         try 
        {
            Statement st = connect.createStatement();
             int  n_upd =  1 ;
            String s;
            //for (s = in.readLine(); s!= null; s = in.readLine())
             while  ((s = in.readLine()) !=  null )
            {
                 StringTokenizer t =  new  StringTokenizer(s,"|");
                 String tl    = "'"+t.nextToken().trim()+"'";      
                 String ls    = "'"+t.nextToken().trim()+"'";      
                 String ds    = t.nextToken();                     
                  double  borg  =  Double .parseDouble(t.nextToken()); 
                 String borgd = t.nextToken();                     

                 String update = "UPDATE table SET  BORGS="+borg+",BORGD="+borgd+where  lss="+ls+" and tls="+tl+" ;

                 //  st.executeUpdate(update);- Вот здесь программа стоит на месте и ничего не делает. Без апдейта работает отлично. 
                 n_upd ++;
            }
            in.close();
            st.close();
            st= null ;
            connect.close();

            EventQueue.invokeLater( new  Runnable()
            {
                 public   void  run()
                {
                    String povPP="<html><p align='center'><b><font color='#000066' face='Verdana'>";
                    String povKK="</font></b></p></html>";
                    String oo=povPP+" Оновлено "+ n_upd +" рядків успішно !"+povKK;

                    JOptionPane.showMessageDialog( null ,oo,"  ", JOptionPane.INFORMATION_MESSAGE);
                }
            });
       }
        catch (IOException exception)
       {
            exception.printStackTrace();
       }
        catch  (Exception e)
       {
           System.out.println(e.getStackTrace());
       }
    }

     private   static  Connection connect= null ;
     private   static  String username="";
}

...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635101
М.Голованов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вывод кв консоль посмотрите. Там должны быть исключения:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        catch (IOException exception)
       {
            exception.printStackTrace();
       }
        catch  (Exception e)
       {
           System.out.println(e.getStackTrace());
       }
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635136
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.ГоловановВывод кв консоль посмотрите. Там должны быть исключения:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        catch (IOException exception)
       {
            exception.printStackTrace();
       }
        catch  (Exception e)
       {
           System.out.println(e.getStackTrace());
       }


Ничего нет в консоли...
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635151
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В консоли просто курсор стоит на месте и мигает
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635342
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы поднять топик - ну очень нужна помощь...
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635413
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlukOza
> Для того, чтобы поднять топик - ну очень нужна помощь...Тема==Ответить




зачем в thread делать invokeLater()?

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635451
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deady GlukOza
> Для того, чтобы поднять топик - ну очень нужна помощь...Тема==Ответить




зачем в thread делать invokeLater()?

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3

Согласна, в данном случае не надо.
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635483
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поставила просто:


Код: plaintext
1.
2.
st.executeQuery("select * from dual");

Тоже самое - прога как - бы замирает....
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635500
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если просто тупо в main создать Connection и выполнить update, явно
указав файл? тоже замрет?
-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635506
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в класспафе правильный classes12.zip? может он корявый и глючит?



-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635577
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Deadyа если просто тупо в main создать Connection и выполнить update, явно
указав файл? тоже замрет?
-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3

В main запрос выполняется.
...
Рейтинг: 0 / 0
ProgressMonitorInputStream - нужна помощь
    #33635732
GlukOza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзай и все получится...

Можно получить сдвиг по фазе.

В SQL Navigatore была занята запись, именно та с какой и начинался цикл с запросом.

Закрыла навигатор и все заработало. Фух...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / ProgressMonitorInputStream - нужна помощь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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