2015-11-17 20 views
0

我有一個名爲activitylog的empid,日期,卡號,開始時間,結束時間的數據庫表。使用jsp dao和servlet在數據庫中只插入4行中的幾行

我想只插入幾行非空或空的行插入mysql數據庫。

我知道如何一次插入一行或所有行,但我只想插入幾行。請告訴我該怎麼做。

的index.jsp

<form action="ActivityServlet" method="post"> 
<h2>ACTIVITY LOG</h2><br> 
<table border="1" id="t01"><thead class="ui-widget-header"> 
    <tr><th>Employee ID</th><th>Date</th><th>CRO/Job Card No.</th><th>Start Time</th><th>End Time</th><th>Category</th></tr> 
    </thead> 
     <tbody class="ui-widget-content"> 

      <tr> 
       <td><input type="text" name="empid1" value=""/></td> 
       <td><input type="date" class="date" name="activitydate1"/></td> 
       <td><input type="text" name="cardno1" /></td> 
       <td><input type="time" name="starttime1"/></td> 
       <td><input type="time" name="endtime1"/></td> 
       <td><input type="text" name="category1"/></td> 

      </tr> 
      <tr> 
       <td><input type="text" name="empid2" value=""/></td> 
       <td><input type="date" class="date" name="activitydate2"/></td> 
       <td><input type="text" name="cardno2" /></td> 
       <td><input type="time" name="starttime2"/></td> 
       <td><input type="time" name="endtime2"/></td> 
       <td><input type="text" name="category2"/></td> 

      </tr> 
<tr> 
       <td><input type="text" name="empid3" value=""/></td> 
       <td><input type="date" class="date" name="activitydate3"/></td> 
       <td><input type="text" name="cardno3" /></td> 
       <td><input type="time" name="starttime3"/></td> 
       <td><input type="time" name="endtime3"/></td> 
       <td><input type="text" name="category3"/></td> 

      </tr> 
<tr> 
       <td><input type="text" name="empid4" value=""/></td> 
       <td><input type="date" class="date" name="activitydate4"/></td> 
       <td><input type="text" name="cardno4" /></td> 
       <td><input type="time" name="starttime4"/></td> 
       <td><input type="time" name="endtime4"/></td> 
       <td><input type="text" name="category4"/></td> 

      </tr> 

    </tbody> 
</table> 
<br><br> 
<input class="myButton" type="submit" value="Submit"> 
<a href="logout.jsp" class="myButton">Logout</a> 
</form> 

ActivityDao:

import com.eis.bean.ActivityBean; 
import com.eis.bean.ConnectionProvider; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.util.List; 
import java.sql.*; 
public class ActivityDao { 
public static final String sql= "insert into activitylog values(?,?,?,?,?,?,?,?,?)"; 

     public static int activity(List<ActivityBean> ebList) throws Exception { 
      int i[] = null; 
      PreparedStatement ps=null; 
      System.out.println("In TimesheetDao"); 
      Connection conn=ConnectionProvider.getConn(); 

      ps = conn.prepareStatement(sql); 

      try{ 
       System.out.println(" in try in Timesheetdao"); 
       conn.setAutoCommit(false); 
       for (ActivityBean activitylog: ebList){ 
       ps.setString(1,activitylog.getEmpid()); 
       ps.setDate(2,new Date(activitylog.getActivitydate().getTime())); 
       ps.setString(3,activitylog.getCardno()); 
       ps.setString(4,activitylog.getStarttime()); 
       ps.setString(5,activitylog.getEndtime()); 
       ps.setString(6,activitylog.getCategory()); 
       ps.setString(7,activitylog.getActivity()); 
       ps.setString(8,activitylog.getTraveltime()); 
       ps.setString(9,activitylog.getRepairtime()); 

       ps.addBatch(); 
       } 
       i= ps.executeBatch(); 
       conn.commit(); 


       } 
      catch (SQLException e) { 
          System.out.println(e.getMessage()); 
          conn.rollback(); 
        } 
      finally { 
       if (conn != null) { 
        try { 
         conn.close(); 
        } catch (SQLException e) { 
         e.printStackTrace(); 
        } 
       } 
       if (ps != null) { 
        try { 
         ps.close(); 
        } catch (SQLException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 

    return i[0]; 
     } 
    } 

AvtivityServlet.java

public class ActivityServlet extends HttpServlet { 

private static final long serialVersionUID = 1L; 

private ActivityDao dao; 
public ActivityServlet() { 
    super(); 
    dao = new ActivityDao(); 
} 

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException,ParseException { 


    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 

    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", Locale.US); 
    List<ActivityBean> ebList= new ArrayList<ActivityBean>(); 
for(int i=1;i<=4;i++){ 
    ActivityBean ab = new ActivityBean(); 
    ab.setEmpid(request.getParameter("empid"+i)); 

    ab.setActivitydate((java.sql.Date) new java.sql.Date(formatter.parse(request.getParameter("activitydate"+i)).getTime())); 
    ab.setCardno(request.getParameter("cardno"+i)); 
    ab.setStarttime(request.getParameter("starttime"+i)); 
    ab.setEndtime(request.getParameter("endtime"+i)); 
    ab.setCategory(request.getParameter("category"+i)); 
    ab.setActivity(request.getParameter("activity"+i)); 
    ab.setTraveltime(request.getParameter("traveltime"+i)); 
    ab.setRepairtime(request.getParameter("repairtime"+i)); 
    ebList.add(ab); 

    } 

HttpSession session = request.getSession(false); 
ActivityDao dao = new ActivityDao(); 

try { 

    int status = ActivityDao.activity(ebList); 

if(status!=0){ 
    out.print("<p style=\"color:Green\">Record saved successfully!!</p>"); 
    RequestDispatcher rd=request.getRequestDispatcher("/index.jsp");  
    rd.include(request,response); 
} 
else{  
    out.print("<p style=\"color:red\">**Record cannot be saved!**</p>");  
    RequestDispatcher rd=request.getRequestDispatcher("/index.jsp");  
    rd.include(request,response); 
} 

} 
catch(Exception e){ 
    e.printStackTrace(); 
} 
} 

,只有bean類是存在的。 上面的代碼是4行。它將被插入到數據庫中。但我想知道如何只插入幾行例如2或3行,那麼我不能這樣做。請幫幫我。

錯誤:

17-Nov-2015 11:42:16.937 SEVERE [http-apr-8080-exec-145] com.eis.servlet.ActivityServlet.doPost null 
java.text.ParseException: Unparseable date: "" 
     at java.text.DateFormat.parse(DateFormat.java:366) 
     at com.eis.servlet.ActivityServlet.processRequest(ActivityServlet.java:53) 
     at com.eis.servlet.ActivityServlet.doPost(ActivityServlet.java:119) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2503) 
     at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2492) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 
+0

請提供ActivityDao代碼 –

+1

@KannanThangadurai感謝您的快速回復..請檢查上面的代碼,它存在ActivityDao下 – dpk

回答

0

一個解決辦法是,以檢查你DAO空值。

例子:

for (ActivityBean activitylog: ebList){ 
    if(activitylog.getCardno==null){ 
     ps.setString(1,activitylog.getEmpid()); 
     ps.setDate(2,new Date(activitylog.getActivitydate().getTime())); 
     ps.setString(3,activitylog.getCardno()); 
     ps.setString(4,activitylog.getStarttime()); 
     ps.setString(5,activitylog.getEndtime()); 
     ps.setString(6,activitylog.getCategory()); 
     ps.setString(7,activitylog.getActivity()); 
     ps.setString(8,activitylog.getTraveltime()); 
     ps.setString(9,activitylog.getRepairtime()); 
     ps.addBatch(); 
    } 
} 

在這裏,你是否cardNo爲null。您可以在那裏進行各種檢查,並根據您的標準限制插入的數量

+0

其不工作... @MaVRoSCy – dpk

+0

什麼不工作?你想排除哪些行?\ – MaVRoSCy

+0

在jsp頁面中有四行......我只填寫2或3行,只有那些行必須進入數據庫......但它給了我這個錯誤。請檢查代碼是否有錯誤。如果我用數據填充所有行,則爲 – dpk

相關問題