powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / В oracle не работает java
6 сообщений из 6, страница 1 из 1
В oracle не работает java
    #34631285
pirat2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите пожалуйста новичку в java и oracle (10.1).
Нужно переместить из папки1 в папку2 используя java все найденные файлы, причем нужно записать названия этих файлов в таблицу TABLE1. Все пути к папкам 1 и 2 прописаны в таблице CONFIG (для папки1 значение поля PARAMETER - 'path_export', для папки2 - 'export'). Проблема в том, что JDeveloper'e, все работает нормально: вставляются записи в таблицу TABLE1, перемещаются файлы, а в oracle почему-то не работает, в чем проблема, что я делаю не так? Для запуска java из oracle использую процедуру...

PS: в java варю еще меньше, чем в oracle, поэтому код состряпан из нескольких примеров и вероятно коряв...


Таблицы:
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TABLE "TABLE1" 
   ("NAME" VARCHAR2( 4000 ))

CREATE TABLE "CONFIG" 
   ("PARAMETER" VARCHAR2( 100 ), 
    "VALUE" VARCHAR2( 4000 ))
Код java:
Код: 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.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
 import  java.sql.*;
 import  java.io.*;
 import  java.nio.channels.FileChannel;
 import  java.net.URL;
 import  java.io.IOException;


 public   class  demo {

 public   static   void  main(String args[]) {
    String server="server";
    String user="user";
    String password="password";

    String path_export;
    path_export="";
    String export;
    export="";

     try  {
             Class .forName("sun.jdbc.odbc.JdbcOdbcDriver");
            String url = "jdbc:odbc:"+server;
            Connection con = DriverManager.getConnection(url, user, password);

            Statement stmt = con.createStatement();

            ResultSet rs = stmt.executeQuery ("select replace(value,'\','\\') as value from config where parameter='path_export'");

                 int  i;
                ResultSetMetaData rsmd = rs.getMetaData ();

                // Взять количество колонок в наборе данных

                 int  numCols = rsmd.getColumnCount ();
                 boolean  more = rs.next ();
                 while  (more) {
                        // Для каждой колонки в цикле: получить
                        // ее значение и показать его
                         for  (i= 1 ; i<=numCols; i++) {
                             if  (i >  1 ) System.out.print(",");
                            path_export = path_export+rs.getString(i);
                        }
                    // Передвинуться на следующую строку набора данных
                    more = rs.next ();
               }

            rs.close();

        rs = stmt.executeQuery ("select replace(value,'\','\\') as value from config where parameter='export'");

            rsmd = rs.getMetaData ();

            // Взять количество колонок в наборе данных

            numCols = rsmd.getColumnCount ();
            more = rs.next ();
             while  (more) {
                    // Для каждой колонки в цикле: получить
                    // ее значение и показать его
                     for  (i= 1 ; i<=numCols; i++) {
                         if  (i >  1 ) System.out.print(",");
                        export = export+rs.getString(i);
                    }
                // Передвинуться на следующую строку набора данных
                more = rs.next ();
           }

        rs.close();

        stmt.close();


    def_file(path_export,export,server,user,password); // запуск определения файлов
    }

                 catch  (SQLException ex) {
                System.out.println("exception");
                    System.out.println ("SQLState: " +
                                    ex.getSQLState ());

                    System.out.println ("Сообщение:  " + ex.getMessage ());
                    System.out.println ("Vendor:   " +
                                    ex.getErrorCode ());
                    ex = ex.getNextException ();
                    System.out.println ("");
                }

             catch  (java.lang.Exception ex) {
                    ex.printStackTrace ();
                 }
    }

     public   static   void  def_file(String path_export, String export,String server,String user, String password){


     try  {
     Class .forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String url = "jdbc:odbc:"+server;
    Connection con = DriverManager.getConnection(url, user, password);

    Statement stmt = con.createStatement();


        File path =  new  File(path_export);
               String[] list = path.list();
               String element;

                for ( int  ii =  0 ; ii < list.length; ii++)
               {
               element = list[ii];
               copyFile(path_export+"\\"+element,export+"\\"+element); // запуск копирования найденных файлов
               stmt.executeUpdate("insert into xml_package(name) values('"+element+"')");
               }
        }
    catch (SQLException ex) {
    System.out.println("exception");
    System.out.println ("SQLState: " + ex.getSQLState ());

    System.out.println ("Сообщение:  " + ex.getMessage ());
    System.out.println ("Vendor:   " + ex.getErrorCode ());
    ex = ex.getNextException ();
    System.out.println ("");
    }
     catch  (java.lang.Exception ex) {
        ex.printStackTrace ();
    }

}

 public   static   void  copyFile(String p_srcFileName, String p_dstFileName) {
             try  {
                FileChannel srcChannel =  new  FileInputStream(p_srcFileName).getChannel();
                FileChannel dstChannel =  new  FileOutputStream(p_dstFileName).getChannel();
                dstChannel.transferFrom(srcChannel,  0 , srcChannel.size());

                srcChannel.close();
                dstChannel.close();

                // удаление скопированного файла из источника
                File file =  new  File(p_srcFileName);
                 boolean  wasRemoved = file.delete();

            }  catch  (IOException e) {
                e.printStackTrace();
            }
        }


}

оборачиваю java в процедуру:
Код: plaintext
1.
2.
3.
4.
create or replace
PROCEDURE demolp
as language java
name 'demo.main(java.lang.String[])';

запускаю процедуру:
Код: plaintext
1.
2.
3.
BEGIN
  demolp(); 
END;
...
Рейтинг: 0 / 0
В oracle не работает java
    #34631480
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо как минимум:

1. Это не совсем хорошая идея в использовании JDBC-ODBC моста для получения соединения к Ораклу в
java-классе, загруженном в него.

2. Лучше не перехватывать все исключения - будет легче отлаживаться.

3. PL/SQL-процедура не совпадает по сигнатуре с вызываемым java-методом.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
В oracle не работает java
    #34631756
pirat2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Denis Popov
Имхо как минимум:

1. Это не совсем хорошая идея в использовании JDBC-ODBC моста для получения соединения к Ораклу в
java-классе, загруженном в него.

А как лучше, можно пример для чайников? (или где об этом более менее понятно написано)


Denis Popov

3. PL/SQL-процедура не совпадает по сигнатуре с вызываемым java-методом.

А это что такое?

Если, например, я меняю представленный код java на код, который записывает текст в файл, то через оракл все работает. Видимо у меня проблема в соединении с бд...
...
Рейтинг: 0 / 0
В oracle не работает java
    #34631891
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
В oracle не работает java
    #34631927
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirat2006 wrote:

> Denis Popov
>
> Имхо как минимум:
>
> 1. Это не совсем хорошая идея в использовании JDBC-ODBC моста для
> получения соединения к Ораклу в
> java-классе, загруженном в него.
>
>
> А как лучше, можно пример для чайников? (или где об этом более менее
> понятно написано)
>

/topic/115141#887206

Поиск: http://www.sql.ru/forum/actualsearch.aspx?search="jdbc:default:connection:"&bid=3
...
Рейтинг: 0 / 0
В oracle не работает java
    #34632138
pirat2006
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо, буду разбираться
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / В oracle не работает java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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