Python中文网

一个关于 编程问题的解答网站.

有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JDBC csv文件错误

我有一个简单的问题,不知怎么的,我看不出我的问题在哪里

我的C:/Temp文件夹中有一个csv文件。我想连接到csv以获取一些数据(取决于特定的行数据、不同的行等)

所以我下载了csvjdbc-1.0-28。jar文件,并将其添加到构建路径。 我编写了如下所示的代码,但总是会出现错误: “java.sql.SQLException:找不到适合的驱动程序”

我看到一些人也有问题,但我没有理解问题背后的问题。我知道这与连接连接有关。我是否需要进行一些额外的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();
    }
}

共 (3) 个答案

  1. # 1 楼答案

    传递给DriverManager.getConnection()的URL字符串需要指定驱动程序名称:

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

    此外,您需要传递csv文件的目录,而不是文件本身。见萨钦的回答,他同时发布了详细的说明

  2. # 2 楼答案

    抱歉,我的错误是:我将文件保存为xlsx文件,而不是csv文件。所以现在解决了它,它成功了!谢谢大家!谢谢你的帮助

  3. # 3 楼答案

    根据(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文件中,因此需要指定一个自定义属性,文件扩展名为“”。在里面

    您的resultSet对象无法使用以下语法查询文件-

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