【发布时间】:2015-07-30 10:01:39
【问题描述】:
我编写了从 Excel 工作表读取数据的代码,将数据插入数据库。我可以成功读取所有数据,但是在将值发布到数据库时,只发布了一行。这是我写的代码,请帮忙。
private void addBtnActionPerformed(java.awt.event.ActionEvent evt) {
try {
FileInputStream file = new FileInputStream(new File("new.xls"));
org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(file);
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
Iterator<Row> rowIterator = sheet.iterator();
rowIterator.next();
while(rowIterator.hasNext())
{
Row row = rowIterator.next();
//For each row, iterate through each columns
Iterator<Cell> cellIterator = row.cellIterator();
while(cellIterator.hasNext())
{
Cell cell = cellIterator.next();
//This will change all Cell Types to String
cell.setCellType(Cell.CELL_TYPE_STRING);
switch(cell.getCellType())
{
case Cell.CELL_TYPE_BOOLEAN:
System.out.println("boolean===>>>"+cell.getBooleanCellValue() + "\t");
break;
case Cell.CELL_TYPE_NUMERIC:
break;
case Cell.CELL_TYPE_STRING:
break;
}
}
QT=row.getCell(0).getStringCellValue();
QG=row.getCell(1).getStringCellValue();
Mgr=row.getCell(2).getStringCellValue();
TAP=row.getCell(3).getStringCellValue();
Prof = row.getCell(4).getStringCellValue();
CS=row.getCell(5).getStringCellValue();
SS=row.getCell(6).getStringCellValue();
SW=row.getCell(7).getStringCellValue();
PMO=row.getCell(8).getStringCellValue();
EO=row.getCell(9).getStringCellValue();
Learner=row.getCell(10).getStringCellValue();
TTP=row.getCell(11).getStringCellValue();
System.out.println(QT+QG+Mgr+TAP+Prof+CS+SS+SW+PMO+EO+Learner+TTP);
System.out.println("");
}
file.close();
到目前为止,我可以成功读取所有 6 行并将它们显示到控制台。但是将值保存到数据库的代码只保存一行而不是 6。
PreparedStatement pst = null;
try{
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection con = DriverManager.getConnection("jdbc:derby:MTD","herbert","elsie1*#");
String sql="Insert into APP.WSP(QUALIFICATIONTYPE ,QUALIFICATIONGROUP ,MANAGERS ,PROFESSIONALS,"+
"TECHNICIANSASSOCIATEPROFESSIONALS,CLERICALSUPPORT,SERVICESALES,SKILLEDWORKERS,PLANTMACHINEOPERATORS,"+
"ELEMENTARYOCCUPATION,LEARNERS,TOTALTRAININGPLANNED)"+
"values(?,?,?,?,?,?,?,?,?,?,?,?)";
pst = con.prepareStatement(sql);
pst.setString(1, QT);
pst.setString(2, QG);
pst.setString(3, Mgr);
pst.setString(4, TAP);
pst.setString(5, Prof);
pst.setString(6, CS);
pst.setString(7, SS);
pst.setString(8, SW);
pst.setString(9, PMO);
pst.setString(10, EO);
pst.setString(11, Learner);
pst.setString(12, TTP);
pst.executeUpdate();
updateTable();
JOptionPane.showMessageDialog(null,"Values Inserted Successfully");
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InvalidFormatException ex) {
Logger.getLogger(OFO.class.getName()).log(Level.SEVERE, null, ex);
} catch (EncryptedDocumentException ex) {
Logger.getLogger(OFO.class.getName()).log(Level.SEVERE, null, ex);
}
【问题讨论】:
-
如果您只运行一个
INSERT,您希望如何插入六行? -
你能告诉我如何运行多个插入.. 很抱歉打扰,但我是 java 新手
-
@Axel:题外话,但您确实可以使用单个 INSERT 插入六行。研究 JDBC executeBatch api 以了解更多信息。
标签: java mysql apache-poi derby