2016-02-16 61 views
0

我有一個簡單的問題,不知何故,我無法看到我的問題在哪裏。JDBC - csv文件錯誤

我在我的C:/ Temp文件夾中有一個csv文件。我想連接到csv以獲取一些數據(取決於特定的行數據,不同的行,...)。

因此,我下載了csvjdbc-1.0-28.jar文件並將其添加到構建路徑中。 我寫的代碼如下所示,但總是出現錯誤: 「值java.sql.SQLException:中找不到合適的驅動程序」

我見過一些人還得到了與它的問題,但我沒有得到背後的問題我有這個問題。我知道它與Connection conn有關。我是否需要做一些額外的JDBC設置,或者如何添加連接的路徑?

在此先感謝!

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

import org.relique.jdbc.csv.CsvDriver; 

public class Main_Class { 

    public static void main(String[] args) { 

     try { 

      try { 
       Class.forName("org.relique.jdbc.csv.CsvDriver"); 
       Connection conn = DriverManager 
         .getConnection("c:\\temp\\Spieltage_log.txt"); 
       Statement stmt = conn.createStatement(); 
       ResultSet results = stmt 
         .executeQuery("select * from Offensiver_Zweikampf"); 
       boolean append = true; 
       CsvDriver.writeToCsv(results, System.out, append); 
       conn.close(); 
       System.out.println(results); 
      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 

     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 

     // JFrame fenster = new Main_Menue(); 
    } 
} 

回答

1

據當時(http://csvjdbc.sourceforge.net/)-

// Create a connection. The first command line parameter is 
    // the directory containing the .csv files. 
    // A single connection is thread-safe for use by several threads. 
    Connection conn = DriverManager.getConnection("jdbc:relique:csv:" + directoryName); 

你的情況應該是例子 -

Properties props = new Properties(); 
    props.put("fileExtension", ".txt"); 

    Connection conn = DriverManager.getConnection("jdbc:relique:csv:C:\\temp", props); 

你也已經把內容在一個txt文件,所以您需要使用fileExtension指定一個自定義屬性爲'.txt'。

您的resultSet對象可以使用以下語法查詢文件 -

ResultSet results = stmt.executeQuery("select * from Spieltage_log"); 
+0

連接txt文件工作正常,但與csv文件,我仍然得到一個錯誤(文件沒有找到,即使它存在... – user3721905

1

傳遞給DriverManager.getConnection() URL字符串需要指定驅動程序名稱:

Connection conn = DriverManager 
        .getConnection("jdbc:relique:csv:c:\\temp"); 

此外,你需要通過CSV文件的目錄,而不是文件本身。查看Sachin在同一時間發佈了詳細說明的答案。

+0

我看到了,但現在我得到了錯誤,指出目錄尚未找到:java.sql.SQLException:找不到目錄:c:\ temp \ Spieltage_log.txt \ - 但該文件夾絕對存在。在一個不同的類我指向它...... – user3721905

0

對不起我的錯:我把文件保存爲xlsx文件而不是csv文件。現在解決了它,它工作!非常感謝你們!感謝您的幫助