我想插入使用JDBC经理与Apache POI从Excel数据导入MySQL数据库表。这里是我的代码:插入数据到MySQL从Excel的JDBC - POI示例程序
TestApp.java
package testapp;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Row;
public class TestApp {
public static void main(String[] args) throws Exception {
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/test","root","root");
con.setAutoCommit(false);
PreparedStatement pstm = null ;
FileInputStream input = new FileInputStream("countrycode.xls");
POIFSFileSystem fs = new POIFSFileSystem(input);
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
Row row;
for(int i=1; i<=sheet.getLastRowNum(); i++){
row = sheet.getRow(i);
String code = row.getCell(0).getStringCellValue();
String desc = row.getCell(1).getStringCellValue();
Date date = row.getCell(2).getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String Date = sdf.format(date);
String callcode = row.getCell(3).getStringCellValue();
Boolean status = row.getCell(4).getBooleanCellValue();
String currency = row.getCell(5).getStringCellValue();
String sql = "INSERT INTO Ocountry (OCCODE, OCDESC, OCDT, OCCALlCODE, OCINACTIVE, OCUCODE) VALUES('"+code+"','"+desc+"','"+date+"','"+callcode+"','"+status+"','"+currency+"')";
pstm = (PreparedStatement) con.prepareStatement(sql);
pstm.execute();
System.out.println("Import rows "+i);
}
con.commit();
pstm.close();
con.close();
input.close();
System.out.println("Success import excel to mysql table");
}
catch (IOException e) {
e.printStackTrace();
}
}
}
这是当我运行该文件中给出的错误:
Exception in thread "main" java.lang.NullPointerException
at testapp.TestApp.main(TestApp.java:36)
Java Result: 1
是否有任何人能帮助我解决我的问题?
您似乎没有被检查的细胞具有阅读它之前的值。如果你这样做会怎样? – Gagravarr
我已检查它,它能够将值存储到数据库中。问题已经解决了。 – susu
只要运行与调试您的应用程序,并在第36行 –