0

我正在尝试制作一个程序,我将从excel文件中读取数据并将它们存储在表格中。我有多个文件,其中大多数文件的代码都可以正常工作。但是当我尝试包含日期列的文件时,我遇到了一些问题。

首先,为了在我的控制台中显示数据,我为不同类型的数据编写了以下代码:

if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                    if (DateUtil.isCellDateFormatted(cell)) {
                        SimpleDateFormat dateFormat = new SimpleDateFormat(
                                "dd/MM/yyyy");
                        System.out.println(cell.getDateCellValue());
                    } else {
                        Double value = cell.getNumericCellValue();
                        Long longValue = value.longValue();
                        System.out.print(cell.getNumericCellValue());
                    }
                } else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                    System.out.print(cell.getRichStringCellValue());
                } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
                    System.out.print(cell.getBooleanCellValue());
                } else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) {
                    System.out.print("null");
                }

此外,当我解析数据时,我将以下代码用于不同类型的数据:

if (cell != null) {
                    if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC) {
                        if (DateUtil.isCellDateFormatted(cell)) {
                            tableFields.put(String.valueOf(cell
                                    .getDateCellValue()), cell.getCellType());
                        } else {

                            tableFields
                                    .put(String.valueOf(cell
                                            .getNumericCellValue()), cell
                                            .getCellType());
                        }
                    } else if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                        tableFields.put(cell.getStringCellValue(), cell
                                .getCellType());
                    } else if (cell.getCellType() == Cell.CELL_TYPE_BOOLEAN) {
                        tableFields.put(String.valueOf(cell
                                .getBooleanCellValue()), cell.getCellType());
                    } else if (cell.getCellType() == Cell.CELL_TYPE_BLANK) {
                        tableFields.put(cell.getStringCellValue(), cell
                                .getCellType());

                    }

当我创建表时:

switch (fieldType) {
            case Cell.CELL_TYPE_NUMERIC:

                str = fieldName + " dateFormat";

                str = fieldName + " INTEGER";
                break;
            case Cell.CELL_TYPE_STRING:
                str = fieldName + " VARCHAR(255)";
                break;
            case Cell.CELL_TYPE_BOOLEAN:
                str = fieldName + " INTEGER";
                break;
            case Cell.CELL_TYPE_BLANK:
                str = "null";
                break;
            default:
                break;
            }

最后,当我使用以下代码填充表格时:

switch (fieldType) {
                case Cell.CELL_TYPE_NUMERIC:
                    str = fieldValue;
                    break;
                case Cell.CELL_TYPE_STRING:
                    str = "\'" + fieldValue + "\'";
                    break;
                case Cell.CELL_TYPE_BOOLEAN:
                    str = fieldValue;
                    break;
                case Cell.CELL_TYPE_BLANK:
                    str = "null";
                    break;
                default:
                    str = "";
                    break;
                }

但是当我运行程序时,我得到了这个异常:

SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Apr 21 00:00:00 EEST 1987)' at line 1
SQLState: 42000
VendorError: 1064

谁能帮我为什么我得到它?日期格式:26/4/1980

4

2 回答 2

0

您插入日期(如示例Apr 21 00:00:00 EEST 1987)以INTEGER键入列。您可以将DATETIMEmysql 类型用于字符串中的日期(带')或DECIMAL用于由 excel 文件中的日期值表示的毫秒数。

SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Apr 21 00:00:00 EEST 1987)' at line 1
于 2013-05-28T09:01:38.333 回答
0

尝试改变

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");

SimpleDateFormat dateFormat = new SimpleDateFormat("dd/M/yyyy");
于 2013-05-28T08:41:55.083 回答