2013-07-15 31 views
1

我在做文本文件批量上傳SQL Server。每當我試圖上傳的文件,得到以下情況除外:例外:操作系統錯誤代碼3

[微軟] [ODBC SQL Server驅動程序] [SQL服務器]無法批量插入 因爲文件 'C:/Form/Input_File/Form.txt'不能打開。 操作系統錯誤代碼3(系統找不到指定的路徑 )。

請找到下面的代碼:

public void uploadFiles() 
    { 
     File dir = new File(inputFilesPath); 
       String[] children = dir.list(); 
       String completePathFileName = ""; 
       System.out.println(" Inside Upload ::"); 
       String saveFileNames = ""; 
       PreparedStatement prepStat; 

       DBConnection dbConnection=new DBConnection(); 
       Connection conHandler= dbConnection.getConnection();  
       if(null!=conHandler)   
        System.out.println(" Clear ::"+conHandler); 

       try 
       { 
        if (children != null) 
        { 
         for (int i = 0; i < children.length; i++) 
         { 
          String filename = children[i]; 
    System.out.println(" children[i]::"+children[i]); 
          // File is validated based on some business rules. 
          if (isValidFile(filename) == 1) 
          { 
           String[] fileSplit = filename.split("E"); 
           String[] extnSplit = fileSplit[1].trim().split(".TXT"); 

           completePathFileName += (completePathFileName.equals("")) 
           ? extnSplit[0] : "^" + extnSplit[0]; 

           saveFileNames += (saveFileNames.equals("")) 
            ? filename : "," + filename; 
           System.out.println(extnSplit[0]); 
          } 
          else 
          { 
           inValidFileNames += (inValidFileNames.equals("")) 
           ? filename : ";\n" + filename; 
          } 
         } 

         if (!completePathFileName.trim().equals("")) 
         { 
          System.out.println(completePathFileName); 
          prepStat = conHandler.prepareStatement("Exec StartFileImport ?"); 
          prepStat.setString(1, completePathFileName); 
          prepStat.execute(); 
          saveFileNameToDatabase(saveFileNames); 
         } 

         } 
       } 
       catch (SQLException sql) 
       { 
        System.out.println(sql.getMessage()); 
       } 
} 

獲取連接對象從下面的代碼:

public Connection getConnection() 
    { 
     System.out.println("In side DB Connection..."); 
     try{ 
      // get a database connection 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      System.out.println("Before Driver"); 
      conn= DriverManager.getConnection("jdbc:odbc:form26qa","form26","form26"); 
      System.out.println("After Driver"); 
      if(conn != null) 
      { 
       System.out.println("Connection established..."); 

      }//if 
      else 
      { 
       System.out.println("Connection failed..."); 

      }//else 
     }//try 
     catch(Exception e) 
     { 
      System.out.println("Exception ocurred..."+e); 
      e.printStackTrace(); 
     }//catch 
     return conn; 
    } 

說明: 我從輸入通道讀取的文件,並試圖讓文件名和文件路徑,並將文件上傳到SQL Server。

應用程序能夠在指定的路徑中找到輸入文件。而上傳我得到上述異常

請檢查並建議我解決這個問題。

+0

消息說,操作系統無法打開文本文件。請向我展示您用來打開文本文件的代碼。下次您發佈問題時,請附上一些代碼,以便有人可以幫助您 –

+0

向我們展示代碼如何?無論如何,它說在那裏你試圖打開一個不存在於指定路徑中的文件。 –

+0

我正在讀取Input_Files文件夾下的所有文件並上傳到SQL Server。你可以看到異常本身。 –

回答

0

該文件需要在服務器上可訪問。文件路徑相對於服務器而言是 ,而不是您的PC。另外,如果您嘗試使用共享或映射驅動器,它將不起作用。您需要使用UNC 路徑。

UNC名稱例子

\\teela\admin$ (to reach C:\WINNT) 
\\teela\admin$\system32 (to reach C:\WINNT\system32) 
\\teela\temp (to reach C:\temp) 
相關問題