0

配列 list の値を使用してデータベースを更新しようとしています。以下は私が試しているコードです。

String query = "insert into login values(? , ?)";
        Connection conn = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;

        try {
            conn = getConnection();
            for(int i = 0;i < rowlength; i++)
            {
                System.out.println(rowList.get(i));
            statement = conn.prepareStatement(query);
            statement.setInt(1, rowList.get(i));
            statement.setString(2, rowsList.get(i+2));
            resultSet = statement.executeQuery();
            }
        } 

        catch (SQLException e) {
            try {
                throw new ServletException("DB interaction failed", e);
            } catch (ServletException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (resultSet != null) try { resultSet.close(); } catch (SQLException ignore) {}
            if (statement != null) try { statement.close(); } catch (SQLException ignore) {}
            if (conn != null) try { conn.close(); } catch (SQLException ignore) {}
                }

ループのすべての値について、コンソールで次のエラーをフェッチします。

java.lang.ClassNotFoundException: org.postgresql.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass    (WebappClassLoader.java:1358)
at org.apache.catalina.loader.WebappClassLoader.loadClass   (WebappClassLoader.java:1204)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at com.aipl.struts.action.ExcelDbAction.getConnection(ExcelDbAction.java:60)
at com.aipl.struts.action.ExcelDbAction.execute(ExcelDbAction.java:126)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

私が間違っていること、またはデータベース内のテーブルを更新する別の方法について誰かに教えてもらえますか。

ありがとうございました////

4

3 に答える 3

2

あなたが間違っているのは、PostgreSQL データベース ドライバーがアプリケーションのクラスパスにないことです。スタックトレースに基づいて、Tomcat を使用していると思います。そのため、PostgreSQL JDBC インターフェイスのドキュメントを参照して、どこに配置する必要があるかを確認してください。

于 2013-04-05T12:28:07.447 に答える
2

このエラーは、jvm がその で jdbc-driver を見つけられなかった場合に表示されますclasspath。クラスパスが正しく構成されていることを確認してください

于 2013-04-05T12:28:32.157 に答える
2

データベース ドライバーをロードする必要があります。たとえば、SQL Server の場合 Connection connection = DriverManager.getConnection(connectionUrl); Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

また、finally ブロックでリソースを閉じる代わりに、Java の try-with リソース (Oracle リンク: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html ) 機能を使用できます。

于 2013-04-05T12:34:03.070 に答える