【发布时间】:2026-01-18 18:05:03
【问题描述】:
我编写了代码以将我的用户数据以 Excel 文件的形式保存到 MySQL 数据库中。当我运行它时,一切正常,除了日期错误。在 excel 文件中,日期格式为 dd.MM.yyyy,而 MySQL 中的日期格式为 yyyy-MM-dd。我应该在我的代码中做什么来转换日期格式,同时将它保存到数据库中?
这些是代码:
import java.io.FileInputStream;
import java.sql.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Vector;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelToDb {
public static void main( String [] args ) {
String fileName="testing.xlsx";
Vector dataHolder=read(fileName);
saveToDatabase(dataHolder);
}
public static Vector read(String fileName) {
Vector cellVectorHolder = new Vector();
try{
FileInputStream myInput = new FileInputStream(fileName);
//POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
XSSFWorkbook myWorkBook = new XSSFWorkbook(myInput);
XSSFSheet mySheet = myWorkBook.getSheetAt(0);
Iterator rowIter = mySheet.rowIterator();
while(rowIter.hasNext()){
XSSFRow myRow = (XSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
//Vector cellStoreVector=new Vector();
List list = new ArrayList();
while(cellIter.hasNext()){
XSSFCell myCell = (XSSFCell) cellIter.next();
list.add(myCell);
}
cellVectorHolder.addElement(list);
}
}catch (Exception e){e.printStackTrace(); }
return cellVectorHolder;
}
private static void saveToDatabase(Vector dataHolder) {
String activityId="";
String activityName="";
String activityAllocation="";
String activityDate="";
String activityPersonInCharge="";
System.out.println(dataHolder);
for(Iterator iterator = dataHolder.iterator();iterator.hasNext();) {
List list = (List) iterator.next();
activityId= list.get(0).toString();
activityName= list.get(5).toString();
activityAllocation= list.get(8).toString();
activityDate= list.get(10).toString();
activityPersonInCharge= list.get(11).toString();
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/TEST", "root", "password");
System.out.println("connection made...");
PreparedStatement stmt=con.prepareStatement("INSERT INTO TEST_DEMO(ACT_ID,ACT_NAME,ACT_ALLOCATION,ACT_DATE,ACT_PERSON_ON_CHARGE) VALUES(?,?,?,?,?)");
stmt.setString(1, activityId);
stmt.setString(2, activityName);
stmt.setString(3, activityAllocation);
stmt.setString(4, activityDate);
stmt.setString(5, activityPersonInCharge);
stmt.executeUpdate();
System.out.println("Data is inserted");
stmt.close();
con.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
请为日期格式化部分提供一些线索。
提前致谢。
【问题讨论】:
-
Date的字符串在哪里?将它们保留为日期 -
我可以举个例子吗?好的。如果我从字符串更改为日期,等号(=)之后应该是什么?抱歉,这还是个新手。