2012-09-04 10 views
1

값을 편집 할 수있는 데이터베이스 테이블이 있습니다. 나는 아래 코드를 수정하려고한다.동일한 텍스트 상자 편집 및 업데이트

표 코드는

<table border="1px"> 
    <tr> 
     <td><b>DBID</b></td> 
     <td><b>Query Raised</b></td> 
     <td><b>Time Raised</b></td> 
     <td><b>Query Answered</b></td> 
     <td><b>Time Answered</b></td> 
    </tr> 
<% 
try { 
    ps = con.prepareStatement("Select DBID, Query_Raised, TR, Query_Answered, TA from Scope1 where TR!='null'"); 

    rs = ps.executeQuery(); 

    while(rs.next()) { 
%> 
    <tr> 
     <td><%=rs.getString("DBID")%></td> 
     <td><input type="Text" value="<%=rs.getString("Query_Raised")%>" name="Updat"></td> 
     <td><%=rs.getString("TR")%> </td> 
     <td><%=rs.getString("Query_Answered")%></td> 
     <td><%=rs.getString("TA")%></td> 
     <td><input type="Submit" value="Update"></td> 
    </tr> 
<% 
    } // while loop ends here 

    rs.close(); 
    con.close(); 
} catch(Exception e) { 
    out.println(e); 
} 
%> 
</table> 

아래로하고 사용하는 업데이트 쿼리는 다음과 같습니다

String a = request.getParameter("Updat"); 

ps = con.prepareStatement("Update Scope1 Set Query_Raised = '" + a + "'"); 

int i = ps.executeUpdate(); 

if(i == 1) { 
    out.print("Done"); 
} else{ 
    out.print("Erro"); 
} 

내가 같은에서 데이터를 업데이트하기 위해 사용해야 할 경우 상태를 알고 싶어 페이지.

감사

+2

JSP에 데이터베이스 코드를 넣지 마십시오! JSP는 **보기 ** 구성 요소이며 쿼리는 ** 모델 ** 쪽의 콩으로 처리해야합니다 ([여기] (https://en.wikipedia.org/wiki/Model%E2%80%93view 참조) % E2 % 80 % 93controller) 큰 그림을 위해). 일단이 구조를 설정하면 해결 된 많은 문제점을 발견 할 수 있습니다. –

+0

질문과 관련하여 : 고유 한 ID를 ''필드에 추가하십시오. 제출 한 후에 수정 된 ID를 찾을 수 있습니다. –

+0

JSP로 코드를 삽입하는 동안 기본적으로 페이지를 새로 고쳐야하지만 추가 코드가 필요하고 빌드 및 배포하는 데 시간이 걸리기 때문에 MVC를 이와 같이 간단한 경우에 구현하는 것이 과도한 경우가 종종 있습니다. – Endy

답변

4

질문에서 첫 번째 코드 부분은 JSP로 말하면 update.jsp이고 두 번째 부분은 서블릿이라고 생각하면 UpdateServlet입니다.

    :

    당신이 <input type="text">submit 버튼이 모든 행에 대한 당신의 update.jsp에 따라서

    ,하지만 난 생각 <form> 그래서 여기 만 <table> 외부해야 하나입니다 내 솔루션 (하나를 선택)을 간다 당신이 클릭 제출할 때

  1. 를 사용하여 여러

    <form action="whatever_action_you_have_which_calls_the_servlet" 
         name="form<%=rs.getString("DBID")%>" 
         id="formID<%=rs.getString("DBID")%>"> 
        // Including name and id so that the different forms remain unique 
        <tr> 
         <td><%=rs.getString("DBID")%></td> 
         <td><input type="Text" value="<%=rs.getString("Query_Raised")%>" name="Updat"></td> 
         <td><%=rs.getString("TR")%> </td> 
         <td><%=rs.getString("Query_Answered")%></td> 
         <td><%=rs.getString("TA")%></td> 
         <td><input type="Submit" value="Update"></td> 
        </tr> 
    </form> 
    

    등의 각 행에 대해 <form> 태그, 그래서에 대한 <form> 제출 것 submit 버튼을 클릭하여 편집 된만 제출하면됩니다. 귀하의 서블릿 코드도 잘 작동합니다.

  2. 당신은 할 수 있습니다 두 점 # 1에서 설명한 두 번째 코드가 될 것 같은 JSP 코드의 블록은, 다음 <form> 코드를 사용

  3. :

    String a = request.getParameter("Updat"); 
    
    if ((a is not empty) or (a is not null) ) { 
        ps = con.prepareStatement("Update Scope1 Set Query_Raised = '" + a + "'"); 
    
        int i = ps.executeUpdate(); 
    
        if(i == 1) { 
         out.print("Done"); 
        } else{ 
         out.print("Error"); 
        } 
    } 
    
    ... 
    
    <form action="whatever_action_you_have_which_will_call_this_JSP" ...> 
        <tr> ... your code as in point#1 
        </tr> 
    </form> 
    
  4. 사용 아약스 및 기타 javascript DOM 조작 방법은 Endy에 의해이 작업을 수행합니다.
    이 경우 JSP (표시하려면) & 서블릿 (코드 업데이트)이 필요합니다.
    조금 더 노력할 수도 있지만 Ajax를 배우고 실제 세계와 조금 더 가까워 질 것입니다.
    멀리까지 jQuery ajax으로 가장 간단합니다.

참고 :
그냥 기록을 위해, 나는 당신이 연습 할 수 있습니다 알고 있지만 당신이 실제 프로젝트에서 그것을 사용할 계획이라면 미리 읽기 바랍니다.

는 JSP에서 스크립틀릿을 사용하는 나쁜 관행입니다 (정말 필요하지 않는 한 그는보기 레벨 로직이 아닌 비즈니스 또는 데이터 수준의 로직 너무 경우)도 악화 JSP 내에 JDBC 코드를 사용하는 것입니다. 따라서 f_puras의 advice을 따라갈 수 있다면 정말 좋을 것입니다. 이 도움이

희망 : 다음 여기 원치 않는 조언을 듣고해야하는 이유 당신이 궁금해하는 경우

는 생각을위한 음식이다.

+0

감사합니다. Prakash,이 도움이되었습니다. – Rakesh

0

당신은 http://api.jquery.com/jQuery.post/를 참조하고, 업데이트를 처리하는 페이지에 데이터를 게시 콜백으로 결과를 반환하는 AJAX를 사용 할 수 있습니다.

다른 해결책은 제출을 처리 한 후 사용자가 양식이있는 페이지로 다시 전달하는 것입니다.

세 번째 해결책은 동일한 페이지에 데이터를 제출하고 거기에서 구문 분석/업데이트하는 것입니다.

+0

안녕하세요. Endy, 위에 언급 된 3 번째 접근 방식으로 어떻게해야하는지 알려주세요. 감사합니다 – Rakesh

+0

기본적으로 양식이있는 동일한 페이지로 "업데이트 쿼리"부분을 이동하십시오. 아주 좋은 습관은 아니지만 잘 작동합니다. – Endy

관련 문제