我有一个
BaseRunner
类:连接到数据库,并具有从数据库插入/选择数据的方法,进行测试插入,其中
工作正常
LetterServlet
类:从表单中获取数据,将其放入数据库,然后将其发送到显示输入数据的页面-插入
不起作用
TestBR
:将测试插入数据库-
工作正常
跑垒员
类别:
public class BaseRunner
{
static Connection connection;
public static void main(String[] args)
{
BaseRunner br = new BaseRunner();
br.insertLetter("TestUser3", "TestLetter3"); //works fine
}
public BaseRunner() {
makeConnection("url",
"postgres", "pass");
}
public boolean makeConnection(String DB_URL, String USER, String PASS)
{
connection = null;
try {
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("Opened database successfully");
return true;
} catch (Exception e) {
e.printStackTrace();
System.err.println(e.getClass().getName()+": "+e.getMessage());
System.exit(0);
return false;
}
}
public void insertLetter(String userName, String letterText) {
try {
Statement statement = connection.createStatement();
PreparedStatement preparedStatement = null;
preparedStatement=connection.prepareStatement("INSERT INTO letters VALUES (?, ?, ?)");
preparedStatement.setInt(1, 0);
preparedStatement.setString(2, userName);
preparedStatement.setString(3, letterText);
preparedStatement.executeQuery();
}
catch (Exception e) {
System.out.println("Exception insert");
e.printStackTrace();
System.err.println(e.getClass().getName()+": "+e.getMessage());
System.exit(0);
}
}
}
LetterServlet
:
package com.web;
import com.util.BaseRunner;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LetterServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String userName = request.getParameter("userName");
String letterText = request.getParameter("letterText");
BaseRunner br = new BaseRunner();
br.insertLetter("TestServletUserReal", "TestServletTextReal"); //doesn't work
RequestDispatcher view= request.getRequestDispatcher("letter_sent_view.jsp");
view.forward(request, response);
}
}
测试br
:
package com.web;
import com.util.BaseRunner;
public class TestBR {
public static void main(String[] args) {
BaseRunner br = new BaseRunner();
br.insertLetter("TestBR", "TestBRText"); //works fine
}
}
我不明白为什么
LetterServlet
的数据库插入不起作用,即使它与
跑垒员
的或
测试br
的
main
方法。