文件流接口从Excel导入数据到数据库
时间: 2023-09-02 08:13:31 浏览: 67
要从Excel导入数据到数据库,你可以使用Java的文件流和数据库连接接口来实现。下面是一个示例代码,演示如何使用Apache POI库和JDBC来实现这个功能:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelToDatabaseImporter {
private static final String DB_URL = "jdbc:mysql://localhost:3306/database_name";
private static final String DB_USERNAME = "username";
private static final String DB_PASSWORD = "password";
public void importDataFromExcel(File file) {
try {
FileInputStream fis = new FileInputStream(file);
// 创建工作簿对象
Workbook workbook = new XSSFWorkbook(fis);
// 获取第一个工作表
Sheet sheet = workbook.getSheetAt(0);
// 连接数据库
Connection connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
// 准备插入数据的SQL语句
String insertQuery = "INSERT INTO table_name (column1, column2, column3) VALUES (?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(insertQuery);
// 迭代行
for (Row row : sheet) {
// 获取单元格数据并插入数据库
Cell cell1 = row.getCell(0);
Cell cell2 = row.getCell(1);
Cell cell3 = row.getCell(2);
preparedStatement.setString(1, cell1.getStringCellValue());
preparedStatement.setString(2, cell2.getStringCellValue());
preparedStatement.setString(3, cell3.getStringCellValue());
preparedStatement.executeUpdate();
}
// 关闭资源
preparedStatement.close();
connection.close();
workbook.close();
fis.close();
System.out.println("数据导入成功!");
} catch (IOException | SQLException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们使用了Apache POI库来处理Excel文件,同时使用了JDBC来连接数据库。你需要根据自己的数据库信息修改`DB_URL`、`DB_USERNAME`和`DB_PASSWORD`常量。在`importDataFromExcel`方法中,我们首先创建文件输入流来读取Excel文件,然后使用`XSSFWorkbook`类创建工作簿对象。接下来,我们连接数据库并准备插入数据的SQL语句。在循环中,我们迭代每一行,并获取单元格数据,然后使用`PreparedStatement`将数据插入数据库。最后,记得关闭资源。
请注意,示例中的插入语句是假设目标表具有3个列,你需要根据你的实际情况修改插入语句和列数。
希望对你有所帮助!如有其他问题,请随时提问。