Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC + Oracle / 15 сообщений из 15, страница 1 из 1
20.09.2004, 20:00
    #32703165
Innate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Привет всем!

Кто-нибудь может объяснить такое:

Есть таблица в Oracle и к ней последовательность:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
drop table p;
create table p
(
  num int not null unique
);

drop sequence num_seq;
create sequence num_seq
  start with 1
  increment by 1;


и хранимая процедура:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create or replace procedure insnew( v_num out int )
as
  l_num int;
begin
  declare
  begin
    select num_seq.nextval into l_num from sys.dual;
    v_num := l_num;
    insert into p( num ) values( l_num );
  exception
    when others then
      rollback;
      raise;
  end;
commit;
end insnew;

и маленькая программка на 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.
import java.lang.*;
import java.sql.*;

public class E
{
  public static void main( String[] args )
  {
    Connection con = null;
    CallableStatement cstmt = null;
    try
    {
      Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
      con = DriverManager.getConnection( args[ 0 ]);
      cstmt = con.prepareCall( "{call insnew( ? )}");
      cstmt.registerOutParameter( 1, java.sql.Types.INTEGER );
      for( int i = 0; i < 10; ++i )
      {
        cstmt.executeUpdate();
        System.out.println( cstmt.getInt( 1 ));
      } 
    }
    catch( SQLException sqle )
    {
      System.out.println( sqle.getErrorCode());
      System.out.println( sqle.getMessage());
    }
    catch( Exception e )
    {
      System.out.println( e.getMessage());
    }
    finally
    {
      try
      {
        if( cstmt != null )
          cstmt.close();
        if(( con != null ) && ( !con.isClosed()))
          con.close();
      }
      catch( SQLException sqle )
      {}
    }
  }
}

Программка просто вставляет 10 записей в табличку в Oracle через JDBC-ODBC мост.

Запускаю программку:
java -jar e.jar "jdbc:odbc:orcl;user=*****/****"

и получаю в выводе десять штук единиц. Причем, в таблицу записи вставляются правильно. Только мне возвращают всегда 1.

Почему так происходит?
...
Рейтинг: 0 / 0
21.09.2004, 09:14
    #32703459
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Попробуй через драйвер оркала, а не через мост.
Типа того:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
try {
	Properties connInfo = new Properties();
	connInfo.put("user", "user");
	connInfo.put("password", "pass");
	connInfo.put("charSet", "Cp1251");
	Class.forName("oracle.jdbc.driver.OracleDriver");
	con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:<db_name>", connInfo);
} catch (Exception e) {
	System.out.println("Couldn't establish connection: " + e);
} //try
...
Рейтинг: 0 / 0
21.09.2004, 13:56
    #32704255
Innate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Не подгружается драйвер:

Код: plaintext
1.
2.
3.
Class.forName ("oracle.jdbc.driver.OracleDriver");                       //first 
 //DriverManager.registerDriver( new oracle.jdbc.OracleDriver());        //second 
 //DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver()); //third 

Компилю:

Код: plaintext
1.
2.
"C:\Program Files\Java\j2sdk1.4.2_05\bin\javac" *.java -classpath путь\ojdbc14.jar -deprecation
"C:\Program Files\Java\j2sdk1.4.2_05\bin\jar" cvfm e.jar manifest.mf *.class

Все нормально компилится. Запускаю:

Код: plaintext
1.
java -classpath путь\ojdbc14.jar -jar e.jar "connectionStingPokaNeVazhno"

First:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
        at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:141)
        at E.main(E.java:12)

Secon:
Код: plaintext
1.
2.
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/OracleDriver
        at E.main(E.java:13)

Third:
Код: plaintext
1.
2.
Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/driver/OracleDriver
        at E.main(E.java:14)
...
Рейтинг: 0 / 0
21.09.2004, 14:32
    #32704356
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Не подгружается драйвер - значит до него нет пути. Проверь путь в classpath до classes12.zip
...
Рейтинг: 0 / 0
21.09.2004, 15:18
    #32704536
Innate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Я использую ojdbc14.jar. Classpath передаю как параметр. Что не так?
...
Рейтинг: 0 / 0
21.09.2004, 15:20
    #32704542
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Вместо ojdbc14.jar замени на classes12.zip
...
Рейтинг: 0 / 0
21.09.2004, 15:26
    #32704560
Innate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Почему? Я только что положил ojdbc14.jar в <jrepath>\lib\ext и все заработало. Я хочу понять, почему с параметром classpath не работает.
...
Рейтинг: 0 / 0
22.09.2004, 10:16
    #32705672
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Укажи ojdbc14 в манифесте (class-path: xxx).
Переменная -класспассс при выполнении jar'ника похоже игнорируется.
...
Рейтинг: 0 / 0
22.09.2004, 11:17
    #32705878
Innate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
Отлично!!!
Заработало.
Написал в манифесте:
class-path: ./odjbc14.jar
...
Рейтинг: 0 / 0
22.09.2004, 11:48
    #32705971
Innate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
To NotGonnaGetUs :

Спасибо!!! :)
...
Рейтинг: 0 / 0
22.09.2004, 17:28
    #32707182
blackmac
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
А вообще лучше запускать так
java -classpath путь\ojdbc14.jar;путь\e.jar Package.Class "connectionStingPokaNeVazhno"
...
Рейтинг: 0 / 0
22.09.2004, 18:17
    #32707343
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
blackmacА вообще лучше запускать так
java -classpath путь\ojdbc14.jar;путь\e.jar Package.Class "connectionStingPokaNeVazhno"

Возможно, но использование манифеста упрощает жизнь.
Сразу видны связи между jar'ами и кто основной, а кто вспомогательные.

Если в jar'е лежит апплет и мы поменяем драйвер, то как минимум не придётся переписывать все теги <applet codebase=".."/> (если они не генерятся), т.к. jar's указанные в минифесте скачиваются вместе с исходным архивом.
...
Рейтинг: 0 / 0
22.09.2004, 18:30
    #32707375
NotGonnaGetUs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
NotGonnaGetUs<applet codebase=".."/>
Т.е <applet archive=".."/>.
...
Рейтинг: 0 / 0
23.09.2004, 14:44
    #32708597
Innate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
blackmacА вообще лучше запускать так
java -classpath путь\ojdbc14.jar;путь\e.jar Package.Class "connectionStingPokaNeVazhno"

A 4to takoe Package.Class?
...
Рейтинг: 0 / 0
12.05.2005, 21:13
    #33060943
painter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC + Oracle
to all
А что такое manifest.mf что в нем находится?Если нетрудно напишите, а то у меня проблема с конектом к базе.Так я все понял, а про манифест не знаю.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC + Oracle / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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