自己写的一个使用jdbc prepare存储数据的例子

public class TestSqlite {
    public static void main(String []args)throws Exception{
        Class.forName("org.sqlite.JDBC");
        Connection conn = DriverManager.getConnection("jdbc:sqlite:D:\\cdkey.db");
        Statement stat = conn.createStatement();
        File file = new File("C:\\Users\\Administrator\\Desktop\\cdkey");
        String tableName="cdkeys";
        BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
        BufferedReader reader = new BufferedReader(new InputStreamReader(fis,"utf-8"),5*1024*1024);// 用5M的缓冲读取文本文件
        int count=0;
        PreparedStatement ps = null;
        String sql = "insert into "+tableName+" values (?)";
        ps=conn.prepareStatement(sql);
        long startTime=System.currentTimeMillis();
        try{
        while(true){
            ++count;
            String str=reader.readLine();
            if(str==null) break;
            conn.setAutoCommit(false);
            ps.setString(1,str);
            ps.addBatch();
            if(count%100000==0){
                conn.commit();
            }
            ps.executeBatch();
            ps.clearBatch();
        }
        }
        catch(SQLException e){
             e.printStackTrace();
            try{
                if(!conn.isClosed()){
                    conn.rollback();
                    System.out.println("提交失败,回滚!");
                    conn.setAutoCommit(true);
                }
            }catch (SQLException e1){
                e1.printStackTrace();
            }
            finally {
                conn.close();

            }

        }
        conn.setAutoCommit(true);
        long endTime=System.currentTimeMillis();
        System.out.println(endTime-startTime);
        System.out.print(count);

    }


}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较常见的需求。我可以给你提供一些思路和代码片段,帮助你实现数据导入功能。 1. 使用 Apache POI 库读取 Excel 文件 Apache POI 是一个用于读 Microsoft Office 格式文件的 Java 库。我们可以使用它来读取 Excel 文件中的数据。首先,你需要在项目中引入 Apache POI 的依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> ``` 然后,在读取 Excel 文件时,你可以使用以下代码: ```java File file = new File("path/to/excel/file.xlsx"); Workbook workbook = WorkbookFactory.create(file); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { System.out.println(cell.toString()); } } ``` 这段代码假定 Excel 文件的第一个 sheet 中包含了需要的数据。 2. 解析 Excel 数据并保存到数据库 读取 Excel 文件后,你需要将其中的数据解析出来,并将其保存到数据库中。这需要你根据具体的数据结构和业务逻辑进行编。在这里,我提供一个简单的例子,假定 Excel 文件中包含了学生信息,需要将其保存到 MySQL 数据库中。 首先,你需要创建一个 Student 类来存储学生信息: ```java public class Student { private String name; private int age; private String gender; // 省略 getter 和 setter 方法 } ``` 然后,你可以使用如下代码来解析 Excel 文件并保存学生信息到数据库: ```java File file = new File("path/to/excel/file.xlsx"); Workbook workbook = WorkbookFactory.create(file); Sheet sheet = workbook.getSheetAt(0); List<Student> students = new ArrayList<>(); for (Row row : sheet) { Student student = new Student(); student.setName(row.getCell(0).getStringCellValue()); student.setAge((int) row.getCell(1).getNumericCellValue()); student.setGender(row.getCell(2).getStringCellValue()); students.add(student); } Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456"); PreparedStatement ps = conn.prepareStatement("INSERT INTO student (name, age, gender) VALUES (?, ?, ?)"); for (Student student : students) { ps.setString(1, student.getName()); ps.setInt(2, student.getAge()); ps.setString(3, student.getGender()); ps.executeUpdate(); } ``` 这段代码假定你已经在本地 MySQL 数据库中创建一个名为 test 的数据库,并且其中包含一个名为 student 的表,表结构如下: ```sql CREATE TABLE student ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, age INT NOT NULL, gender VARCHAR(10) NOT NULL ); ``` 这段代码先使用 Apache POI 读取 Excel 文件中的数据,然后将其保存到一个 List<Student> 中。接下来,它使用 JDBC 连接到本地 MySQL 数据库,并将学生信息保存到 student 表中。 这只是一个简单的例子,实际情况下你需要根据具体的业务需求进行编。但是这应该可以给你提供一些思路,帮助你实现数据导入功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值