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

Поиск:

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


Новичок



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

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



1. Я ни чего не понял!
2. там этого и нет я просто выделил ибо там было очень много(НЕ ОШИБОК) все ошибки я тебе показал...

Помойму я вполне понятно описал два класса если ты сам возьмёшь немного отредактировава подашь нужный inputstream и попробуешь проинсертить в свою базу тыч 20 строк увидишь тоже самое...
я не могу понять тебе что прислать 20000 строк кода со всеми функциями поверь там понять будет ещё сложнее...

где в Stack Trace Oracle-кие классы???
помойму Jdeveloper замечу Oracl-овский выдаёт достаточно информации....
проблемма понятна, хоть один более менее внятный ответ я ещё не видел!!

мне не нужно что бы кто-то досконально изучал мой код и кричал "а тут у тебя не правильно" мне просто нужна причина, и прежде чем давайть советы попробуй сам сделать хотя бы что-то на подобие(из input steama insertтить в базу не так уж и сложно вроде)! да если получится у меня что-то не так(пришли тогда подобный код работающий правильно) если нет то уже можно думать....


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


Leprechaun Software Developer
****


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

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



1. Если ты коннектишься к Oracle и во время работы с Oracle у тебя возникают ошибки, то в stack trace по любому будут присутсвовать классы Oracle. По моему это очевидно.

2. Я вставлял в Oracle и больше 20 тысяч строк, и ошибок не было. Так что дело не в количестве строк, а в том как ты это делаешь.

3. Я говорил про stack trace потому что, вот это:
Цитата
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)
...

не стандартный stack trace (а именно первая строка, дальше все нормально вроде). И по нему можно понять на какой строке твоего кода выпала ошибка, здесь я этого понять не могу.

4. Присылать 20000 строк кода или накидать маленький тестовый пример демонстрирующий ошибку, дело твое, помощь нужна не мне. Пока я вижу только, что ошибка не в Oracle. Вероятно в дело в том как ты читаешь из ZIP-архива, но это только предположение.


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


Новичок



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

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



спасибо)
06/11/17 13:33:09 com.svcon.jdbf.JDBFException: Connection reset
06/11/17 13:33:09 java.net.SocketException: Connection reset
всё именно так первая строка не стандартная потому что jar для работы с dbf пришлось подключать самому... поэтому он такой...
буду думать)
PM MAIL   Вверх
LSD
Дата 17.11.2006, 18:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Сделай тестовый пример который инсертит в таблицу. Так по крайней мере ты локализуешь проблему.


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


Новичок



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

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



локализовал((
Код

package LoadBase;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.lang.ClassNotFoundException;
import java.lang.StringBuffer;
import java.net.URL;
import java.net.URLConnection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.CallableStatement;
import javax.servlet.*;
import java.io.PrintWriter;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.jdbc.OracleResultSet;
import oracle.sql.CLOB;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import sun.net.www.http.HttpClient;
import java.util.zip.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.io.*;
import java.util.*;
import com.svcon.jdbf.*;
import java.util.Date;
import java.text.DecimalFormat;
import java.text.DateFormat;
import java.text.SimpleDateFormat;


public class Test 
{
  private Date date = new Date();
  private static final DateFormat dateform = new SimpleDateFormat ("yyyy-MM-dd");

  public Test()
  {
  }
  public void InsertInBase()
  {
    try
    {
      StringBuffer resbuff = new StringBuffer();
      Class.forName("oracle.jdbc.driver.OracleDriver");
      Connection connect = DriverManager.getConnection("jdbc:oracle:thin:@IP:1521:orex", "***", "***");
      Object [] rows = null;
      int count=0;
      int k=0;
      DBFReader dbfr=new DBFReader("C:/TEMP/klmn/klmn.dbf");
      int countf = dbfr.getFieldCount();
      System.out.println("FieldCount = " + dbfr.getFieldCount());
      Statement st = connect.createStatement();
         while(dbfr.hasNextRecord())
         {       
           rows = dbfr.nextRecord();

           ResultSet refid = st.executeQuery("select sid from ddd where SC='" + 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());
           //numrec++;
         }
          st.close();
    }
    catch(Exception ex){
    //System.out.println(numrec);
                ex.printStackTrace();
              //InsertInBase(dbfr, connect, numrec);//Log.SQLLogger.error("SQLEception", ex);
    }
  }
    
    
  private String typefdb(Object objf, char type) 
  {
    //try
    //{
       String encoded = null;
       switch (type) {
 
         case 'C': 
          encoded = ((String) objf).trim();
         break;
         
         case 'N':
           encoded = objf.toString();
         break;
         
         case 'L':
           encoded = objf.toString();
         break;
         
         case 'D':
           encoded = dateform.format( (Date) objf);
         break;
         
          default: // We should never reach this
               encoded = ((String) objf).trim();
          break;
      }
      return encoded;
    //}
    //catch(Exception ex){ex.printStackTrace();return null;};
  }
  /**
   * 
   * @param args
   */
  public static void main(String[] args)
  {
    Test test = new Test();
    test.InsertInBase();
  }
}


спасибо LSD))
так всё работает!!!
когда чтение из файла, но в другом варианте
файл берётся с инета в зипе раззиповывается, и этот поток передаётся dbfreader`у((
примерно так:
 
Код

    URL callingurl = new URL ('ссылка на файл');
     URLConnection urlCon = callingurl.openConnection();
     int len = urlCon.getContentLength();
     int c;
     if (len > 0)
     {
     InputStream is = urlCon.getInputStream();
     ZipInputStream zis = new ZipInputStream(is);
        while(zis.available()>0)
        {
         zis.getNextEntry();
         DBFReader dbfr = new DBFReader(zis);
         InsertInBase();
         connect.commit();
         zis.close();         
        }
     }

где          InsertInBase(); это фактически функция InsertInBase из локализованного примера выше... 
только вместо DBFReader`у вместо файла передаётся как видно zis!!! и сооответственно возникает connection reset!(


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


Leprechaun Software Developer
****


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

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



А если попробовать не распаковывать этот файл на лету, а для начала просто записать на диск. Он нормально запишется, целиком и без ошибок?


--------------------
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
Дата 23.11.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да это я и попробывал))) разарзивирование на диск идёт отлична) изменил только вместо
  InputStream is = urlCon.getInputStream();
     ZipInputStream zis = new ZipInputStream(is);
это)
     ZipInputStream zis = new ZipInputStream(urlCon.getInputStream());

мда не смотря на то что на диск разархивируется нормально в базу опять connection reset(


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


Новичок



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

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



не знаю что где грохалось (т.е. почти знаю)(
НО ЗАРАБОТАЛО!!!)))
берётся с урла зипник потом пишется с StringBuffer потом обратно в InputStream и оттуда уже в DBFReader и в базу примерно так)

Код

     URL callingurl = new URL (host+href);
     URLConnection urlCon = callingurl.openConnection();
     int len = urlCon.getContentLength();
     String line="";
     int c;
     if (len > 0)
     {
        String zip="";
        ByteArrayInputStream in = new ByteArrayInputStream(Base64.decode(zip));
        ZipInputStream zis = new ZipInputStream(urlCon.getInputStream());
        byte[] buffer = new byte[512];
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection connect = DriverManager.getConnection("jdbc:oracle:thin:@IP:1521:orex", "***", "***");
        while(zis.available()>0)
        {
         zis.getNextEntry();
         StringBuffer isbuf=new StringBuffer();
         int ch;
                   
         while ((len = zis.read(buffer)) > 0) {
           isbuf.append(new String(buffer,0,len));
         }
         zis.closeEntry();
         zis.close();
         ByteArrayInputStream baIS = new ByteArrayInputStream(isbuf.toString().getBytes());
         DBFReader dbfr = new DBFReader(baIS);
         InsertInBase(dbfr, connect, 0);
         connect.commit();
         zis.close();         
        }
      }   


Спасибо LSD за участие и советы))

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

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

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


 




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


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

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