Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / ProgressMonitorInputStream - нужна помощь / 12 сообщений из 12, страница 1 из 1
30.03.2006, 13:30
    #33634972
GlukOza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressMonitorInputStream - нужна помощь
Помогите пожалуйста разобраться с потоками.
Мне надо обновить записи в таблице.
Так как записей много, то запускаю поток.

На команде 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
30.03.2006, 14:01
    #33635101
М.Голованов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ProgressMonitorInputStream - нужна помощь
Вывод кв консоль посмотрите. Там должны быть исключения:

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

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


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




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

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

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




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

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

Posted via ActualForum NNTP Server 1.3

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


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

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

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



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

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

Posted via ActualForum NNTP Server 1.3

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

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

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

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


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