Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java.sql.Array, как создать экземпляр 
:(
    Опции темы
hatsumeika
Дата 4.7.2005, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2005
Где: Минск

Репутация: 2
Всего: 2



В JDBC есть такой замечательный интерфейс java.sql.Array. Мне нужно создать его экземпляр, чтобы использовать массив целых чисел как параметр при вызове хранимой процедуры.

К сожалению не получилось в JDBC найти, откуда его получить. По логике его должен давать либо Driver, либо DataSource, либо Connection. Но подобного метода там нет.

Помогите пожалуйста.
PM MAIL   Вверх
Domestic Cat
Дата 4.7.2005, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172





--------------------

PM   Вверх
LSD
Дата 4.7.2005, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Создание SQL типов как-то Clob, Blob, Array напрямую не возможно. Нужно или использовать SQL выражения и получать его в виде результата, или использовать специфичные для БД функции: например:
Код
oracle.sql.BLOB.createTemporaly()
oracle.sql.CLOB.createTemporaly()



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
hatsumeika
Дата 5.7.2005, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2005
Где: Минск

Репутация: 2
Всего: 2



Спасибо за советы !

Но в моей ситуации брать Array из ResultSet не подходит, потому что у меня есть int[] , который не взят из БД, а получен в Java-коде, и мне нужно передать его как параметр в хранимую процедуру.

Может подскажете как создать Array специфичными для Оракл методами ?
PM MAIL   Вверх
FatherFrost
Дата 5.7.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

Репутация: нет
Всего: 6



А почему необходимо использовать именно java.sql.Array. Может проще будет использовать java.util.Array???


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
hatsumeika
Дата 5.7.2005, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2005
Где: Минск

Репутация: 2
Всего: 2



Цитата(FatherFrost @ 5.7.2005, 14:26)
А почему необходимо использовать именно java.sql.Array. Может проще будет использовать java.util.Array???

ты имеешь в виде java.util.Arrays ?
так он совсем другое делает
PM MAIL   Вверх
FatherFrost
Дата 5.7.2005, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почетный Мороз
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 27.4.2005
Где: Крайний север

Репутация: нет
Всего: 6



Это понятно, что другое... Просто я из-за этого переделал все под ArrayList... А ResultSet уже руками в него записывал.


--------------------
Задаю много глупых вопросов....
PM MAIL ICQ   Вверх
igon
Дата 5.7.2005, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 30.10.2004

Репутация: 1
Всего: 21



Цитата
у меня есть int[] , который не взят из БД, а получен в Java-коде, и мне нужно передать его как параметр в хранимую процедуру.

Может подскажете как создать Array специфичными для Оракл методами ?
Вот как я передаю массивы int в Oracle9i из jsp (multiple selection)
Код

<%@ page import="java.sql.*, java.util.*,oracle.sql.*,oracle.jdbc.*" contentType="text/html;charset=windows-1251"%>
...
<%! int[] getIntArray(String[] stringArray)
      {
        int[] intArray = new int[stringArray.length]; 
        for (int i=0;i<stringArray.length;i++)
          {
            intArray[i] = Integer.parseInt(stringArray[i]);
          }
        return intArray;
      } 
%>
...
   try
     {
      query = "{?= call Add_Physician( ?,?,?,?,?,   ?,?,?,?,?,    ?,?,?,?)}";
      OracleCallableStatement cs = (OracleCallableStatement)conn.prepareCall(query);
       cs.registerOutParameter(1,Types.INTEGER);

       cs.setString( 2,request.getParameter("name"));
       ArrayDescriptor arrayDescriptor = ArrayDescriptor.createDescriptor     ("TYPE_NUMBER_VARRAY", conn);
      cs.setArray(  3,new ARRAY (arrayDescriptor, conn, getIntArray(request.getParameterValues("specialities"))));
      cs.setArray(  4,new ARRAY (arrayDescriptor, conn, getIntArray(request.getParameterValues("consult_desease_group"))));
      cs.setArray(  5,new ARRAY (arrayDescriptor, conn, getIntArray(request.getParameterValues("treat_desease_group"))));
      cs.setArray(  6,new ARRAY (arrayDescriptor, conn, getIntArray(request.getParameterValues("treatment_methods"))));
...

В БД
Код

...
CREATE OR REPLACE TYPE type_Number_VArray AS VARRAY(3) OF NUMBER

Код

...
Function Add_Physician(iName                     Varchar2,
                       iSpecialities             type_Number_VArray,
                       iCONSULT_DESEASE_GROUP    type_Number_VArray,
                       iTREAT_DESEASE_GROUP      type_Number_VArray,
                       iTreatment_Methods        type_Number_VArray,
...)
  return Number
  Is
...
      For i In 1..iSpecialities.Count
        Loop
          If NVL(iSpecialities(i),0) > 0 Then
            Insert Into PHYSICIAN_SPECIALITY  
                    (ID_Physician, ID_Speciality)
              Values(vID,          iSpecialities(i));
          End If;
        End Loop;
      For i In 1..iCONSULT_DESEASE_GROUP.Count
        Loop
          If NVL(iCONSULT_DESEASE_GROUP(i),0) > 0 Then
            Insert Into PHYSICIAN_CONSULT  
                    ( ID_Physician, ID_Consult)
              Values(vID,          iCONSULT_DESEASE_GROUP(i));
          End If;
        End Loop;
...

ИМХО, "выдрал" всё существенное smile

Это сообщение отредактировал(а) igon - 5.7.2005, 16:20


--------------------
Хотите поговорить об этом?
PM   Вверх
hatsumeika
Дата 5.7.2005, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.5.2005
Где: Минск

Репутация: 2
Всего: 2



2 igon: thanx !!!

Т.е. получается, что нужно обращаться непосредственно к классу реализующему Array (new ARRAY).

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.