lapartdombre | Je réalise un programme parcourant un répertoire et insérant ensuite dans une table ORACLE le nom pour chaque fichier, sa taille et le contenu du fichier dans un BLOB
Voila mon code
Code :
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- /**
- * @author user
- *
- * To change this generated comment edit the template variable "typecomment":
- * Window>Preferences>Java>Templates.
- * To enable and disable the creation of type comments go to
- * Window>Preferences>Java>Code Generation.
- */
- public class essai
- {
- public static void listeRepertoire ( File repertoire ) throws IOException, SQLException
- {
-
- String name;
- long taille;
- java.sql.Date date;
- java.util.Date date2;
- String chaine;
-
- // déclaration des variables
- Connection conn = null;
- java.sql.PreparedStatement ps2 = null;
- File file = null;
- FileInputStream fis = null;
- long fileLength;
- int j=0;
- String url = "jdbc:oracle:thin:@stat9007:1521:ADMORA8I";
- String user = "*****";
- String passWord = "******";
-
- if ( repertoire.isDirectory ( ) )
- {
-
- File[] list = repertoire.listFiles();
- for ( int i = 0; i < list.length; i++)
- {
-
- name=list[i].getName();
- taille=list[i].length();
- date= new java.sql.Date(list[i].lastModified());
- date2=new java.util.Date(list[i].lastModified());
- chaine= date.toString();
- chaine =""+chaine.substring(8,10)+"/" + chaine.substring(5,7) +"/" + chaine.substring(0,4)+" " + date2.toString().substring(11,16) +"";
- String fileName = list[i].getAbsolutePath().replace('\\','/');
-
- try
- {
- Class.forName("oracle.jdbc.driver.OracleDriver" );
- conn = DriverManager.getConnection(url,user,passWord);
- ps2 = conn.prepareStatement("insert into BASEQ.BQ_STDLIST ( BASEQ.BQ_STDLIST.STD_CODE , BASEQ.BQ_STDLIST.STD_TAILLE , BASEQ.BQ_STDLIST.STD_DT_INT , BASEQ.BQ_STDLIST.STD_DOC)values( '"+name +"' ,"+taille +", TO_DATE('"+chaine+"','DD/MM/YYYY HH24:MI'),?) " );
- file = new File(fileName);
- fileLength = file.length();
- fis = new FileInputStream(file);
-
- // définition des variables dans la requete
- ps2.setBinaryStream(1, fis, (int)fileLength);
-
- // envoi de la requête pré-compilée avec les paramêtres
- ps2.executeUpdate();
-
- ps2.close();
- fis.close();
- conn.close();
-
- }
-
- catch (Exception e)
- {
- System.out.println(e.getMessage());
- }
- try
- {
- ps2.close();
- fis.close();
- conn.close();
- }
- catch (Exception e)
- {
- System.out.println(e.getMessage());
- }
-
- listeRepertoire( list[i]);
- }
-
- }
-
- }
- public static void main(String[] args) throws SQLException, IOException
- {
- listeRepertoire(new File("C:\\Documents and Settings\\cleclercq\\Bureau\\stdlist" ));
- System.out.println("FIN" );
- }
- }
|
Et j'ai systematiquement comme erreur
Code :
- Exception d'E/S: Software caused connection abort: socket write error
- Il n'y a plus de données à lire dans le socket
- ORA-00020: maximum number of processes (50) exceeded
|
Pour le nombre de processus je comprends le message d'erruer mais je ne vois pas pourquoi j'ai cette erreur car je ferme bien mon statement, ma conncetion.
Pour les erreurs sur la socket, je n'y comprens rien. Que signifie cette erreur et comment la résoudre?
Si quelqu'un pourrait me donner un petit coup de main.
Merci Message édité par lapartdombre le 07-06-2004 à 15:12:41
|