2012-11-14 2 views
0

테이블에 레코드를 삽입하려고합니다. html 폼에서 선택합니다 ... JSP에서 이와 비슷한 것을 사용할 수 있습니까? 당신은 내가 그것이 무엇인지 될 수있다 동의 JDBC를 사용하려면변수 테이블 이름을 JSP로 삽입하십시오.

String queryString = "INSERT INTO ? (login,password,full_name,ulevel) VALUES (?, ?, ?, ?)"; 
+0

IIRC을 위치 값은 값입니다. 그게 맞다면, 테이블 이름을 확인하고 괜찮은 경우 문자열 연결을 사용할 수 없습니까? –

+0

그래서 당신의 제안은 무엇입니까? :) 죄송합니다, 당신을 이해하지 못합니다 .. – steven967

+0

모든 문자열을 병합하려면 병합을 사용하십시오. –

답변

0

홈페이지 대답 , 당신이 시도 할 수 있습니다 :

<% String myquery = "SELECT * FROM EMPLOYEES WHERE DEPARTMENT = ?"; %> 
<% PreparedStatement mystatement = connection.prepareStatement(myquery); %> 
<% mystatement.setString(1, request.getParameter("myURLparam")); %> 
<% ResultSet results= mystatement.execute(); %> 

당신이 사용하는 방법에 대한 링크를 참조 할 수 있습니다 그것. 아래 섹션을 확인 -

String fs; 
fs = String.format("The value of the float " + 
       "variable is %f, while " + 
       "the value of the " + 
       "integer variable is %d, " + 
       " and the string is %s", 
       floatVar, intVar, stringVar); 

http://docs.oracle.com/javase/tutorial/java/data/strings.html : http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

이전 답변 : : 를 사용하여 문자열 형식

자바 예를 들어 자바 오라클은 더 나은 예를 얻었다.

JSP로 적용하십시오.

<html> 
    <head> 
     <title>Concatenate String in JSP</title> 
    </head> 
    <body bgcolor="#fff"> 
     <% String tableName = "Table"; %> 
     <% String login = "login"; %> 
     <% String password = "myPassword"; %> 
     <% String fullName = "Full Name"; %> 
     <% String ulevel = "Level 1"; %> 
     <% String msg = "INSERT INTO " + tableName + " (login,password,full_name,ulevel) VALUES ("+ login + ", "+password+","+fullName+", "+ulevel+")"; %> 
     <% out.println(msg); %> 
    </body> 
</html> 
+0

나는 이것을 사용했다 : "INSERT INTO"+ tableNameVariable + "............." 그리고 그것은 나를 에러로 보여준다. – steven967

+0

이 예제에서, msg' 변수는이 페이지의 아무 곳이나 있습니다. 답변을 주었지만 jsp에서 무엇을 쿼리해야합니까? 쿼리를 서블릿 내부에서 프로그래밍하면 안됩니까? –

+1

OP가 적어도 열 값에 대해 준비된 명령문 쿼리를 사용하려고 시도했지만 SQL 삽입 위험을 증가시키는 문자열 연결 (따옴표로 묶지 않은!) 변수로 넘어갈 것을 제안합니다. 왜? – BalusC

0

나는이 :

<% 
String login = request.getParameter("login"); 
String password = request.getParameter("password"); 
String full_name = request.getParameter("full_name"); 
String ulevel = request.getParameter("ulevel"); 
String team_id = request.getParameter("team_id"); 
String fs = String.format("insert into " + "%s " + "(login,password,full_name,ulevel) values " + "(%s,%s,%s,%s)", team_id, login, password, full_name, ulevel); 

Connection connection = null; 
PreparedStatement pstatement = null; 
Class.forName("com.mysql.jdbc.Driver").newInstance(); 
int updateQuery = 0; 
if (login != null && password != null && full_name != null && ulevel != null && team_id != null) { 
    if (login != "" && password != "" && full_name != "" && ulevel != "" && team_id != "") { 

     try { 
      connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/coding", "root", "root"); 
      pstatement = connection.prepareStatement(fs); 
      pstatement.setString(1, login); 
      pstatement.setString(2, password); 
      pstatement.setString(3, full_name); 
      pstatement.setString(4, ulevel); 
      updateQuery = pstatement.executeUpdate(); 
      if (updateQuery != 0) { 

       response.sendRedirect("index.jsp"); 



      } 
     } catch (Exception ex) { 
      out.println("Unable to connect to database."); 
      } finally { 
      pstatement.close(); 
      connection.close(); 
     } 
    } 
} 

%>

이 나던 작동

그러나 login,password,full_name,ulevel,team_id 다른 소스 코드의 HTML 양식에서하는 매개 변수 .. :/

+0

문제는 '연결'에 있으며 문자열과 관련이 없습니다. 'out.print (fs)'를 사용하려고한다면, 그것은 작동합니다. 내가 해결하려고 노력하자. 잠깐 ... –

+0

코드 첫 줄에'<% @ page import = "java.sql. *"%> "이 있어야 할 수도있다. 그런 다음 JDBC 드라이버가 라이브러리로 설치되어 있는지 확인하십시오. 당신이 가지고있는 오류를 게시 할 수 있습니까? –

관련 문제