能够插入数据但无法更新

时间:2015-12-02 15:08:38

标签: java jdbc

我正在编写一个Web应用程序,并使用Excel作为后端,因为我不应该使用任何其他。在我的代码中,我在2个表上执行jdbc。插入1,更新另一个。以下是我的代码。

public class PostDataDAO {
    DBConnection dbConnection = new DBConnection();

    public void save(UserBean postBean) throws SQLException {
        String userName = new com.sun.security.auth.module.NTSystem().getName();
        System.out.println(userName);
        Connection conn, conn1 = dbConnection.conn;
        PreparedStatement ps, ps1 = dbConnection.ps;
        String excelPath = "D:\\Danny\\Result1.xls";
        String mainPath = dbConnection.excelPath;
        try {
            dbConnection.createClassForName();
            conn = DriverManager.getConnection(
                    "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" + excelPath + "; READONLY=FALSE;");
            System.out.println("Connecting to database…");
            System.out.println("Oracle JDBC Driver Registered!");
            if (conn != null) {
                System.out.println("You made it, take control your database now!");
            } else {
                System.out.println("Failed to make connection!");
            }
            String insert = "insert into [result$] VALUES (?,?,?,?,?,?,?,?,?,?,?,?)";
            System.out.println(postBean.getStartDate() + " from Bean" + " end date is " + postBean.getEndDate());
            ps = conn.prepareStatement(insert);
            ps.setString(1, postBean.getCaseNumber());
            ps.setString(2, postBean.getCaseOwner());
            ps.setString(3, postBean.getStatus());
            ps.setString(4, postBean.getIssue());
            ps.setString(5, postBean.getReason());
            ps.setString(6, postBean.getDateOpened());
            ps.setInt(7, postBean.getAge());
            ps.setString(8, postBean.getResolution());
            ps.setString(9, postBean.getFinalStatus());
            ps.setString(10, postBean.getStartDate());
            ps.setString(11, postBean.getEndDate());
            ps.setDouble(12, postBean.getTotalTimeTaken());
            System.out.println("Date from post bean ----------------- Case Number is " + postBean.getCaseNumber());

            System.out.println("Storing Object is Done!");
            ps.execute();

            conn1 = DriverManager.getConnection(
                    "jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" + mainPath + "; READONLY=FALSE;");
            System.out.println("Connecting to database…");
            System.out.println("Oracle JDBC Driver Registered!");
            if (conn1 != null) {
                System.out.println("You made it, take control your database now! in the second block");
            } else {
            }
            System.out.println("for m second block " + postBean.getCaseNumber());
            String x = postBean.getCaseNumber();
            String updateSheet = "UPDATE [report1448039568905$] SET STATE = 1 where [Case Number] = '" + x + "'";
            ps1 = conn1.prepareStatement(updateSheet);
            System.out.println(" and " + updateSheet);
            ps1.execute();
            ps1.close();
            conn1.commit();
            conn1.close();
            ps.close();
            conn.commit();
            conn.close();

        } catch (Exception e)

        {
            e.printStackTrace();
        }
    }

我的问题是,当我点击提交时,插入部分正确发布。但更新部分有点棘手和令人困惑。 System.out.println()按预期打印所有内容,并将我要发送到我的代码的数据,删除行,撤消删除,保存。我在我的eclipse控制台中收到以下消息。

Dec 01, 2015 7:18:23 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/SFDCTracker] has started
Dec 01, 2015 7:18:24 PM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/SFDCTracker] is completed

一旦我收到上述消息,另一张表就会更新。

我感到困惑的是,为什么我要为第二张桌子而不是第一张桌子做这件事。第一个插入没有任何问题。

请让我知道如何解决这个问题。

在这里,当我对此做了一些研究时,我开始知道,我从excel表中获取数据,我需要更新相同的Cell。最初我认为它可能是因为它可能是只读的,但我没有得到任何例外。

我的第二个结论是我需要重建。数据将在新构建时保存。这是否意味着excel文件在更新时发布,当我点击运行时,它会再次被锁定?如果是这样我怎么能解决这个问题。

由于

0 个答案:

没有答案