2015-03-31 9 views
0

Я застрял в некотором коде с JSP-формами для JDBC. Я относительно новичок в кодировании, но после долгого поиска в Интернете я до сих пор не решил проблему. Мне нужно «вставить в» таблицу данных людей типа, в моей форме jsp.Форма JSP для JDBC с использованием сервлета

JSP:

<form action="CampaignToJDBC" method="post"> 
     Enter company name: <input type="text" name="pname" /><br/> 
     Enter company email: <input type="email" name="pemail" /><br/> 
     <input type="submit" value="Apply" /> 
</form> 

Servlet:

 Connection con = null; 
     PreparedStatement ps = null; 

     // ____________________________________________ 

     String pname = request.getParameter("pname"); 
     String pemail = request.getParameter("pemail"); 

     Class.forName(driver); 
     con = DriverManager.getConnection(URL); 
     String Query = "insert into campaigns(pname, pemail) values(?, ?)"; 
     ps = con.prepareStatement(Query); 
     ps.setString(1, pname); 
     ps.setString(2, pemail); 

     ps.executeUpdate(); 

SQL:

DROP TABLE campaigns; 

CREATE TABLE campaigns(
Pname varchar2(32), 
Pemail varchar2(32) 
); 

Моя проблема заключается в том, что он не вставляет его в базу данных, и с моим недавно приобрел Я не знаю, почему. Я посмотрел несколько примеров, но все они были похожи на мои.

  • Александр

ПОЛНЫЙ сервлет:

@WebServlet(name = "CampaignToJDBC", urlPatterns = {"/CampaignToJDBC"}) 
public class CampaignToJDBC extends HttpServlet { 
public static String driver = "oracle.jdbc.driver.OracleDriver"; 
public static String URL = "jdbc:oracle:thin:@datdb.cphbusiness.dk:1521:dat"; 
public static String ID = ""; 
public static String PW = ""; 
private int id = 0; 
Connection con = null; 
PreparedStatement ps = null; 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    String pname = request.getParameter("pname"); 
    String pemail = request.getParameter("pemail"); 

    try { 
     Class.forName(driver); 
     con = DriverManager.getConnection(URL, ID, PW); 
     String Query = "insert into campaigns(Pname, Pemail) values(?, ?)"; 
     ps = con.prepareStatement(Query); 
     ps.setString(1, pname); 
     ps.setString(2, pemail); 

     ps.executeUpdate(); 

     id = id + 1; 
    } catch (Exception e) { 

    } finally { 
     try { 
      ps.close(); 
     } catch (SQLException ex) { 
      Logger.getLogger(CampaignToJDBC.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     try { 
      con.close(); 
     } catch (SQLException ex) { 
      Logger.getLogger(CampaignToJDBC.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 

    RequestDispatcher rd = request.getRequestDispatcher("display.jsp"); 
    rd.forward(request, response); 
} 

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
/** 
* Handles the HTTP <code>GET</code> method. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Handles the HTTP <code>POST</code> method. 
* 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Returns a short description of the servlet. 
* 
* @return a String containing servlet description 
*/ 
@Override 
public String getServletInfo() { 
    return "Short description"; 
}// </editor-fold> 
} 
+0

Что, черт возьми, эта линия внутри сервлета ?? И пелас обеспечивают полный код для вашего класса сервлета. – drgPP

+0

закрыть соединение. здесь хорошо [Пример] (http://www.mkyong.com/jdbc/jdbc-statement-example-insert-a-record/) – Braj

+0

У вас есть попытка блокировки catch? Если это так, то это исключение? – user75ponic

ответ

0

Пожалуйста отделить бизнес-логику от JSP и сервлетов стороне. Сделайте индивидуальный класс для логики, скажем, менеджера/контроллера или чего-то еще. Реализуйте там логику и попробуйте ее с консоли или UnitTest.

Если он работает нормально, чем вызов этого метода из вашего сервлета. Сначала попробуйте с постоянными параметрами. См. Файл журнала, генерировать информацию о журнале или использовать System.out.println(); чтобы увидеть, что происходит. Поиск исключений в журналах.

Выполняется ли запрос SELECT в Servet? Значит, соединение хорошее. Постарайтесь приблизиться.

+0

Я пробовал то, что вы сказали с System.out.println («Driver Succesful») ;. И посмотрел журнал. (Как я уже сказал, я новичок в этом). Это то, что сервер GlassFish сказал мне: 'Info: Driver Info успешным: ERROR Info: Driver Info успешным: ERROR Info: Driver Info успешным: ERROR' Так что похоже, что это соединение что не удается): –

+0

Хорошо. Скопируйте журнал ошибок (трассировку стека) в свой вопрос. В Glassfish вы можете использовать пул соединений, чтобы вы могли попробовать подключиться к базе данных в консоли администратора. –

0

ПРОБЛЕМА РЕШАЛА.

Код был верным, но я забыл добавить необходимый драйвер. Так что все, что я сделал, это добавить библиотеку с драйвером, и это сработало. Извини, я виноват!

Спасибо всем за помощь :)

Смежные вопросы