Exception in thread "main" java.sql.SQLException

Résolu
AHop Messages postés 28 Statut Membre -  
AHop Messages postés 28 Statut Membre -
Bonjour,

j'arrive pas à detecter c'est quoi l'erreur



7 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    Le message est assez explicite : le fichier est introuvable.
    Soit il n'existe pas, soit le programme n'a pas les droits pour y accéder.

    Remarque : une SQLException pour un problème de fichier c'est faux.
    0
  2. AHop Messages postés 28 Statut Membre
     
    le fichier existe et le programme à les droits d'accés
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Il faut voir le code alors.
      Le message de l'exception est peut être aussi faux que son type...
      0
  3. AHop Messages postés 28 Statut Membre
     
    avec ce code j'ai créer le nouveau fichier txt

    
    package calcul;
    
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class A1 {
    	static String Newligne = System.getProperty("line.separator");
    
    	public static void main(String[] args) throws Exception  {
    	    Class.forName("org.relique.jdbc.csv.CsvDriver");
    
    
    		String csvFile = "d:/fichier.txt";
    		String csvFile1 = "C:\\csv\\csv.txt";
    
    		List<LineFile> list;
    		try {
    			list = ListFromTXT(csvFile);
    
    			TXTFromList(list, csvFile1);
    
    			List<LineFile> list1 = ListFromTXT(csvFile1);
    
    			for (int i = 0; i < list1.size(); i++) {
    
    				LineFile lf = list1.get(i);
    			
    				
    				System.out.println(lf.getAttribute5() + " + "
    						+ lf.getAttribute6() + " = " + lf.getAttribute9());
    				
    			
    
    			}
    
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    
    	}
    
    	public static void TXTFromList(List<LineFile> liste_files, String file_name)
    			throws IOException {
    		File fichier_clt = new File(file_name);
    		
    
    		BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(
    				fichier_clt, true));
    		bufferedWriter.append("id,origin,destination,capacite,eo,Em,DTM,DTD");
    
    
    		for (LineFile lfile : liste_files) {
    
    			String cont = "";
    			cont = cont + lfile.getAid() + ",";
    			cont = cont + lfile.getAttribute2() + ",";
    
    			cont = cont + lfile.getAttribute3() + ",";
    
    			cont = cont + lfile.getAttribute4() + ",";
    
    			cont = cont + lfile.getAttribute5() + ",";
    			cont = cont + lfile.getAttribute6() + ",";
    			cont = cont + lfile.getAttribute7() + ",";
    			cont = cont + lfile.getAttribute8() + ",";
    		
    
    
    			cont = cont + lfile.getAttribute9();
    
    			cont = cont + Newligne;
    		
    
    			bufferedWriter.write(cont);
    		}
    		bufferedWriter.close();
    
    	}
    
    	public static List<LineFile> ListFromTXT(String file_name)
    			throws IOException {
    		BufferedReader br = null;
    		String line = "";
    		ArrayList<LineFile> files = new ArrayList<LineFile>();
    
    		try {
    
    			br = new BufferedReader(new FileReader(file_name));
    			int cpt = 0;
    			while ((line = br.readLine()) != null) {
    				if (cpt > 0) {
    					String[] ls = line.split(",");
    
    					LineFile lineFile = new LineFile();
    					lineFile.setAttribute1(ls[0]);
    					lineFile.setAttribute2(ls[1]);
    					lineFile.setAttribute3(ls[2]);
    					lineFile.setAttribute4(ls[3]);
    					lineFile.setAttribute5(ls[4]);
    					lineFile.setAttribute6(ls[5]);
    					lineFile.setAttribute7(ls[6]);
    					lineFile.setAttribute8(ls[7]);
    
    
    					//
    					DateFormat df = new SimpleDateFormat("yyyy-MM-dd_HH:mm");
    					DateFormat df1 = new SimpleDateFormat("HH:mm");
    
    					Calendar c1 = Calendar.getInstance();
    					String date1 = lineFile.getAttribute5();
    					try {
    						c1.setTime(df.parse(date1));
    					} catch (ParseException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    
    					Calendar c2 = Calendar.getInstance();
    					String time = lineFile.getAttribute6();
    
    					try {
    						c2.setTime(df1.parse(time));
    					} catch (ParseException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    					Calendar cTotal = (Calendar) c1.clone();
    
    					cTotal.add(Calendar.HOUR_OF_DAY, c2.get(Calendar.HOUR_OF_DAY));
    					cTotal.add(Calendar.MINUTE, c2.get(Calendar.MINUTE));
    
    					String somme = df.format(cTotal.getTime());
    					System.out.println(somme);
    					
    
    					lineFile.setAttribute9(somme );
    
    					
    					files.add(lineFile);
    					
    					
    
    					
    					
    					
    				}
    				cpt++;
    
    			}
    
    			return files;
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    			return null;
    		} catch (IOException e) {
    			e.printStackTrace();
    			return null;
    		} finally {
    			if (br != null) {
    				try {
    					br.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    					return null;
    				}
    			}
    		}
    
    	}
    
    }
    
    


    et ce code pour faire le trie du nouveau fichier
    
    package calcul;
    
    import java.sql.*;
    import java.util.Properties;
    
    import org.relique.jdbc.csv.CsvDriver;
    
    public class ConCsv
    {
      public static void main(String[] args) throws Exception
      {
        Class.forName("org.relique.jdbc.csv.CsvDriver");
    
        
        Properties props = new Properties();
        props.put("fileExtension", ".txt");
    
        Connection conn = DriverManager.getConnection("jdbc:relique:csv:C:\\csv", props);
    
        
        Statement stmt = conn.createStatement();
    
        ResultSet results = stmt.executeQuery("select * from requests order by eo");
    
       
        boolean append = true;
        CsvDriver.writeToCsv(results, System.out, append);
    
        conn.close();
      }
    }
    
    0
  4. KX Messages postés 19031 Statut Modérateur 3 020
     
    Le code de CsvStatement :

    https://sourceforge.net/p/csvjdbc/code/ci/csvjdbc-1.0.31/tree/src/main/java/org/relique/jdbc/csv/CsvStatement.java

    Lignes 350 et suivantes :

    if (path != null && (!connection.isIndexedFiles()))
    {
        fileName = path + tableName + connection.getExtension();
    
        CsvDriver.writeLog("CSV file name: " + fileName);
    
        File checkFile = new File(fileName);
    
        if (!checkFile.exists())
        {
            throw new SQLException(CsvResources.getString("fileNotFound") + ": " + fileName);
        }
    
        if (!checkFile.canRead())
        {
            throw new SQLException(CsvResources.getString("fileNotReadable") + ": " + fileName);
        }
    }

    Le message fileNotFound ne peut être obtenu que si checkFile.exists() renvoie false, il faut donc se référer à la documentation de File :

    https://docs.oracle.com/javase/8/docs/api/java/io/File.html#exists--

    "true if and only if the file or directory denoted by this abstract pathname exists; false otherwise"

    Donc on en revient à ce que je disais, le fichier n'existe pas.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. AHop Messages postés 28 Statut Membre
     
    la creation du fichier ell se fait corectement et le fichier existe
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      Sauf que le fichier que le programme cherche c'est requests.txt (qui correspond à la table sur laquelle tu fais ton select), toi tu as un fichier csv.txt
      0
  7. AHop Messages postés 28 Statut Membre
     
    tu as raison j'ai changer le nom de la table mais il se produit un nouveau erreur
    0
  8. AHop Messages postés 28 Statut Membre
     
    c bon c'est fait Merci
    0