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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Connection reset, IOException 
V
    Опции темы
tmp13
Дата 16.11.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



програмно формируются insert`ы в таблицу базы...
через некоторое время:
06/11/16 14:24:13 Connection reset
попробывал переодически делать select date from dual не помогает
всё равно где то на 16000 записях отваливается((

какие методы решения?

Код

        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection connect = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:orex", "****", "****");

         while(next)
         {       
           Statement st = connect.createStatement();
           ResultSet seqval = st.executeQuery("select TEST_SEQ.nextval from dual");
           resbuff.append("INSERT INTO TEST (ID, NID) VALUES ( " + seqval.getString(1) + " ," + nid);
           CallableStatement cstmt = connect.prepareCall(ex);        
           cstmt.execute();
           cstmt.close();
           seqval.close();
           count++;
           if(count==1000)
           {
             connect.commit();
             st.executeQuery("select sysdate from dual");
           }
           resbuff.delete(0, resbuff.length());
           st.close();
        }
         connect.commit();

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


Leprechaun Software Developer
****


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

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



1. У тебя синтаксически неправильно написан insert.
2. Попробуй так:
Код
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connect = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:orex", "****", "****");

PreparedStatement ps = connect.prepareStatement("INSERT INTO TEST (ID, NID) VALUES (TEST_SEQ.nextval, ?)");
while(next)
{
  ps.setXXX(1, nid);
  ps.execute();
  count++;
  if(count == 1000)
  {
    connect.commit();
  }
}
ps.close();
connect.commit();



--------------------
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   Вверх
tmp13
Дата 16.11.2006, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



прошу прощения просто попытался сократить код плохо получилось)

Код

        while(zis.available()>0)
        {
         zis.getNextEntry();
         DBFReader dbfr = new DBFReader(zis);
         StringBuffer resbuff = new StringBuffer();
         Object [] rows = null;
         int countf = dbfr.getFieldCount();
         int count=0;
         while(dbfr.hasNextRecord())
         {       
           Statement st = connect.createStatement();
           rows = dbfr.nextRecord();
           ResultSet refid = st.executeQuery("select secid from test where CODE='" + typefdb(rows[0],dbfr.getField(0).getType(),inXML)+"'");
           refid.next();
           String sid = refid.getString(1);
           ResultSet seqval = st.executeQuery("select TEST_SEQ.nextval from dual");
           seqval.next();
           resbuff.append("INSERT INTO TEST (ID, SID, DATETIME, P, Q, V) VALUES ( " + seqval.getString(1) + " ," + sid);
           for(int i=1;i<countf;i++)
           {
             if(i==3)
             {
               continue;
             }
             if(dbfr.getField(i).getType()=='D')
             {
               resbuff.append(", TO_DATE( '").append(typefdb(rows[i],dbfr.getField(i).getType(),inXML)).append(" ").append(typefdb(rows[i+1],dbfr.getField(i+1).getType(),inXML)).append("','YYYY-MM-DD HH24:MI:SS')");
               i++;
               continue;
             }
             resbuff.append(", ").append(typefdb(rows[i],dbfr.getField(i).getType(),inXML));
           }
           resbuff.append(")");
           String ex = resbuff.toString();
           CallableStatement cstmt = connect.prepareCall(ex);        
           cstmt.execute();
           cstmt.close();
           seqval.close();
           count++;
           if(count==1000)
           {
             connect.commit();
             st.executeQuery("select sysdate from dual");
           }
           resbuff.delete(0, resbuff.length());
           st.close();
         }
         connect.commit();
  }

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


Leprechaun Software Developer
****


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

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



Попробуй использовать параметризованный PreparedStatement, как у меня в примере.


--------------------
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   Вверх
tmp13
Дата 16.11.2006, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



не помогает( тоже самое((
PM MAIL   Вверх
LSD
Дата 16.11.2006, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Точную ошибку дай, полный StackTrace.


--------------------
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   Вверх
tmp13
Дата 16.11.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



.....................

06/11/16 17:27:31 INSERT INTO TEST (ID, SID, DATETIME, P, Q, V) VALUES ( 69214 ,24, TO_DATE( '2006-11-15 15:32:35','YYYY-MM-DD HH24:MI:SS'), 22, 92, 20)



06/11/16 17:27:31 Connection reset


06/11/16 17:27:31 ================== Test Error Exception=========================

06/11/16 17:27:31 ex.Message='Connection reset'

06/11/16 17:27:31 ================================================================


в конце функциии:
Код

catch(IOException ex){
     System.out.println("================== Test Error Exception=========================");
     System.out.println("ex.Message='"+ex.getMessage() +"'");
System.out.println("================================================================");}



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


Leprechaun Software Developer
****


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

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



Сделай:
Код
ex.printStackTrace();



--------------------
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   Вверх
Bulat
Дата 17.11.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



tmp13, не обижайся конечно, но опять 25, что на forum.sources.ru, что здесь ты опять выдираешь, пишешь только то что считаешь сам важным, выдай полностью, все что необходимо чтобы было понятно в чем у тебя проблема и тебе сразу помогут.......на моей памяти еще не было чтоб не помогали вообще кому-либо smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
tmp13
Дата 17.11.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



всё не много переписал примерно так:
Код

public void TF()
{
    try
   {
        InputStream is = urlCon.getInputStream();
        ZipInputStream zis = new ZipInputStream(is);
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection connect = DriverManager.getConnection("jdbc:oracle:thin:@host:1521:orex", "***", "***");
        while(zis.available()>0)
        {
         zis.getNextEntry();
         DBFReader dbfr = new DBFReader(zis);
         InsertInBase(dbfr, connect, 0);
         connect.commit();
         zis.close();         
        }
     }
    catch(IOException ex){ex.printStackTrace();}
    catch(Exception ex){ex.printStackTrace();}
}


  public void InsertInBase(DBFReader dbfr, Connection connect, int numrec)
  {
    try
    {
      StringBuffer resbuff = new StringBuffer();
      Object [] rows = null;
      int count=0;
      int k=0;
      int countf = dbfr.getFieldCount();
      System.out.println("FieldCount = " + dbfr.getFieldCount());
         while(dbfr.hasNextRecord())
         {       
           Statement st = connect.createStatement();
           rows = dbfr.nextRecord();
           ResultSet refid = st.executeQuery("select sid from KLMN where SCODE='" + typefdb(rows[0],dbfr.getField(0).getType())+"'");
           refid.next();
           String sid = refid.getString(1);
           ResultSet seqval = st.executeQuery("select TEST_SEQ.nextval from dual");
           seqval.next();
           resbuff.append("INSERT INTO TEST (ID, SID, DATETIME, P, Q, V) VALUES ( " + seqval.getString(1) + " ," + sid);
           for(int i=1;i<countf;i++)
           {
             if(i==3)
             {
               continue;
             }
             if(dbfr.getField(i).getType()=='D')
             {
               resbuff.append(", TO_DATE( '").append(typefdb(rows[i],dbfr.getField(i).getType())).append(" ").append(typefdb(rows[i+1],dbfr.getField(i+1).getType())).append("','YYYY-MM-DD HH24:MI:SS')");
               i++;
               continue;
             }
             resbuff.append(", ").append(typefdb(rows[i],dbfr.getField(i).getType()));
           }
           resbuff.append(")");
           String ex = resbuff.toString();
           CallableStatement cstmt = connect.prepareCall(ex);        
           cstmt.execute();
           cstmt.close();
           seqval.close();
           count++;
           if(count==1000)
           {
             connect.commit();
             st.executeQuery("select sysdate from dual");
           }
           resbuff.delete(0, resbuff.length());
           st.close();
           numrec++;
         }
    }
    catch(Exception ex){
              System.out.println(numrec);
              InsertInBase(dbfr, connect, numrec);
              ex.printStackTrace();} 
  }



===================================================

Код

06/11/17 13:33:05 15515

06/11/17 13:33:08 !!!!!!!!!=============<<<<<<<<<>>>>>>>>>>>>>>>=============!!!!!!!!!!!

06/11/17 13:33:09 com.svcon.jdbf.JDBFException: Connection reset

06/11/17 13:33:09 java.net.SocketException: Connection reset

06/11/17 13:33:09    at java.net.SocketInputStream.read(SocketInputStream.java:168)

06/11/17 13:33:09    at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)

06/11/17 13:33:09    at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)

06/11/17 13:33:09    at java.io.BufferedInputStream.read(BufferedInputStream.java:277)

06/11/17 13:33:09    at sun.net.www.MeteredStream.read(MeteredStream.java:106)

06/11/17 13:33:09    at java.io.FilterInputStream.read(FilterInputStream.java:111)

06/11/17 13:33:09    at java.io.FilterInputStream.read(FilterInputStream.java:111)

06/11/17 13:33:09    at java.io.PushbackInputStream.read(PushbackInputStream.java:161)

06/11/17 13:33:09    at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:213)

06/11/17 13:33:09    at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:134)

06/11/17 13:33:09    at java.util.zip.ZipInputStream.read(ZipInputStream.java:139)

06/11/17 13:33:09    at java.io.DataInputStream.readFully(DataInputStream.java:266)

06/11/17 13:33:09    at java.io.DataInputStream.readFully(DataInputStream.java:242)

06/11/17 13:33:09    at com.svcon.jdbf.DBFReader.nextRecord(Unknown Source)

06/11/17 13:33:09    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

06/11/17 13:33:09    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

06/11/17 13:33:09    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

06/11/17 13:33:09    at java.lang.reflect.Method.invoke(Method.java:324)

06/11/17 13:33:10    at java.lang.Thread.run(Thread.java:534)

06/11/17 13:33:21 !!!!!!!!=============<<<<<<<<<>>>>>>>>>>>>>>>=============!!!!!!!

 smile  smile  smile только не говорите что и этого мало!!!





PM MAIL   Вверх
Bulat
Дата 17.11.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



помоему, использование конектов не синхронизировано.

ну это так сходу, первая мысль  smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
tmp13
Дата 17.11.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



сейчвс как бы если сброшен коннект то в кэтче зано вызывается функция и всё ok, но всё таки хотелось бы понять почему он его сбрасывает это проблемма java или oracle? или удалённой работы с сервером?(там линухи соответственно)
PM MAIL   Вверх
Bulat
Дата 17.11.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



tmp13, вроде как бы проблема в коде(на мой взгляд), потому как

com.svcon.jdbf.JDBFException - Used to indicate a fatal error, while writing or reading a database (DBF) file.

ИМХО, не работал с ораклом, но меня смущает:
Код

               resbuff.append("INSERT INTO TEST (ID, SID, DATETIME, P, Q, V) VALUES ( " + seqval.getString(1) + " ," + sid);
               for(int i=1;i<countf;i++)
               {
                 if(i==3)
                 {
                   continue;
                 }
                 if(dbfr.getField(i).getType()=='D')
                 {
                   resbuff.append(", TO_DATE( '").append(typefdb(rows[i],dbfr.getField(i).getType())).append(" ").append(typefdb(rows[i+1],dbfr.getField(i+1).getType())).append("','YYYY-MM-DD HH24:MI:SS')");
                   i++;
                   continue;
                 }
                 resbuff.append(", ").append(typefdb(rows[i],dbfr.getField(i).getType()));
               }
               resbuff.append(")");


инсерт идет, но внутри инсерта ифы и т.п.

Это сообщение отредактировал(а) Bulat - 17.11.2006, 14:41


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
tmp13
Дата 17.11.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



if`ы не внутри инсерта;) если скпорировать в jdev или редактор который показывает где какая скобка закрывается то увидите что это не так;)...

имхо проблемма в этом:
06/11/17 13:33:09 java.net.SocketException: Connection reset

Это сообщение отредактировал(а) tmp13 - 17.11.2006, 14:59
PM MAIL   Вверх
LSD
Дата 17.11.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



1. Хотелось бы понять где какая строка (я же не могу знать как у тебя классы называются и номера строк в них).
2. Стектрейс не полный, в твоем коде я не вижу печати 
Цитата
!!!!!!!!=============<<<<<<<<<>>>>>>>>>>>>>>>=============!!!!!!!

а в стеке он присутсвует, и самое главное: где в Stack Trace Oracle-кие классы?


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

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

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


 




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


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

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