我做中,我想從使用JFileChooser的用戶請執行下列操作步驟 -爪哇 - ArrayIndexOutOfBoundsException異常由於INSERT查詢
輸入HTML表格文件中的應用程序。
轉換在html爲csv該表。
填充我的數據庫與.csv文件的內容。
這是延續以前的問題,我問 - link.
final JFileChooser fileDialog = new JFileChooser();
JButton btnInputFile = new JButton("Input File");
btnInputFile.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
int returnVal = fileDialog.showOpenDialog(rootPane);
if (returnVal == JFileChooser.APPROVE_OPTION) {
java.io.File file = fileDialog.getSelectedFile();
String name = file.getName();
name = name.substring(0, name.lastIndexOf("."));
name += ".html";
File newFile = new File(file.getParentFile(), name);
if (file.renameTo(newFile)) {
try {
TableToCSV tableToCSV = new TableToCSV(newFile, ',', '\"', '#', CSV.UTF8Charset);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try
{
BufferedReader br=new BufferedReader(new FileReader(newFile));
String line;
while((line=br.readLine())!=null)
{
String[]value = line.split(",");
String sql = "INSERT into main (, Ticket #, Status, Priority, Department, Account Name) "
+ "values ('"+value[0]+"','"+value[1]+"','"+value[2]+"','"+value[3]+"','"+value[4]+"','"+value[5]+"')";
PreparedStatement pst = DatabaseConnection.ConnectDB().prepareStatement(sql);
pst.executeUpdate();
}
br.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, e);
}
}
}
});
btnInputFile.setFont(new Font("Segoe UI Symbol", Font.BOLD, 15));
btnInputFile.setBounds(34, 31, 122, 51);
getContentPane().add(btnInputFile);
一旦運行,它顯示java.lang.ArrayIndexOutOfBoundsException - 1錯誤。由於它將文件轉換爲csv,我認爲這部分代碼有些問題。
String[]value = line.split(",");
String sql = "INSERT into main (, Ticket #, Status, Priority, Department, Account Name) "
+ "values ('"+value[0]+"','"+value[1]+"','"+value[2]+"','"+value[3]+"','"+value[4]+"','"+value[5]+"')"
不能說。我試過System.out.println(value.length),它返回= 1。這是不正確的。我哪裏錯了? csv肯定有6列 – satnam
您是否在CSV中使用逗號作爲分隔符。只要打印行如果長度!= 6。 – user2793390
是的,逗號是分隔符。如何打印該行?它顯示value.length = 1,所以也許它不正確的列數? – satnam