Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将CSV导入Java中的SQLite_Java_Sql_Sqlite_Csv - Fatal编程技术网

将CSV导入Java中的SQLite

将CSV导入Java中的SQLite,java,sql,sqlite,csv,Java,Sql,Sqlite,Csv,我开始学习Java,需要一些帮助。我需要将CSV文件导入SQLite数据库。我有这个CSV阅读器,但我不知道如何将这些数据复制到SQLite数据库中 import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class csv { public static void main

我开始学习Java,需要一些帮助。我需要将CSV文件导入SQLite数据库。我有这个CSV阅读器,但我不知道如何将这些数据复制到SQLite数据库中

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class csv {
        public static void main(String[] args) {
        String csvFile = "/home/user/user.csv";
        BufferedReader br = null;
        String line = "";
        String cvsSplitBy = ",";

        try {

            br = new BufferedReader(new FileReader(csvFile));
            while ((line = br.readLine()) != null) {

                String[] table = line.split(cvsSplitBy);
                  }
            } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

}

如果循环保持这种状态,则必须遍历数组中的每一行,选择值并将其写入数据库。要将数据写入sqlite数据库,应该使用google。您将找到大量关于如何做到这一点的示例

您可以使用JDBC和准备好的语句(查看此文档)

  • 为SQLite下载一些JDBC驱动程序。比如说这里,

  • 将JDBCJAR添加到类路径中

  • 写下这样的话:

    String dbName = "insert your db name here";
    Connection conn = null;
    try {
        // use your dbname instead
        conn = DriverManager.getConnection("jdbc:sqlite:dbname");
        // use your tablename instead; set as much question marks as many fields you have
        PreparedStatement stmt =
            conn.prepareStatement("insert into tablename (column1, column2, column3) values (?, ?, ?)");
        br = ...;
        while (line = ...) {
            String[] table = ...;
            // set values to replace question marks in prepared statement
            stmt.setInt(1, table[0]);
            stmt.setString(2, table[1]);
            stmt.setString(3, table[2]);
            // so, know your statement is like insert into ... values (table[0], table[1], table[2])
            // and maybe add other fields...
            stmt.executeUpdate(); // insert data into table
        }
    } catch (...) { ...
    } finally { ...close conn and br... }
    

  • :如何打开到SQLite db的连接并插入记录。好的,但我不知道如何将这两件事结合起来。我可以在这个循环中选择值并将它们写入我的数据库吗?
    for(String str:table){//getSession().createQuery(“插入到表中”\u NAME values(“+str+”)))。executeUpdate()}
    类似的操作就可以了