테이블에 레코드를 삽입하려고합니다. html 폼에서 선택합니다 ... JSP에서 이와 비슷한 것을 사용할 수 있습니까? 당신은 내가 그것이 무엇인지 될 수있다 동의 JDBC를 사용하려면변수 테이블 이름을 JSP로 삽입하십시오.
String queryString = "INSERT INTO ? (login,password,full_name,ulevel) VALUES (?, ?, ?, ?)";
테이블에 레코드를 삽입하려고합니다. html 폼에서 선택합니다 ... JSP에서 이와 비슷한 것을 사용할 수 있습니까? 당신은 내가 그것이 무엇인지 될 수있다 동의 JDBC를 사용하려면변수 테이블 이름을 JSP로 삽입하십시오.
String queryString = "INSERT INTO ? (login,password,full_name,ulevel) VALUES (?, ?, ?, ?)";
홈페이지 대답 , 당신이 시도 할 수 있습니다 :
<% 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>
나는 이것을 사용했다 : "INSERT INTO"+ tableNameVariable + "............." 그리고 그것은 나를 에러로 보여준다. – steven967
이 예제에서, msg' 변수는이 페이지의 아무 곳이나 있습니다. 답변을 주었지만 jsp에서 무엇을 쿼리해야합니까? 쿼리를 서블릿 내부에서 프로그래밍하면 안됩니까? –
OP가 적어도 열 값에 대해 준비된 명령문 쿼리를 사용하려고 시도했지만 SQL 삽입 위험을 증가시키는 문자열 연결 (따옴표로 묶지 않은!) 변수로 넘어갈 것을 제안합니다. 왜? – BalusC
나는이 :
<%
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 양식에서하는 매개 변수 .. :/
문제는 '연결'에 있으며 문자열과 관련이 없습니다. 'out.print (fs)'를 사용하려고한다면, 그것은 작동합니다. 내가 해결하려고 노력하자. 잠깐 ... –
코드 첫 줄에'<% @ page import = "java.sql. *"%> "이 있어야 할 수도있다. 그런 다음 JDBC 드라이버가 라이브러리로 설치되어 있는지 확인하십시오. 당신이 가지고있는 오류를 게시 할 수 있습니까? –
IIRC을 위치 값은 값입니다. 그게 맞다면, 테이블 이름을 확인하고 괜찮은 경우 문자열 연결을 사용할 수 없습니까? –
그래서 당신의 제안은 무엇입니까? :) 죄송합니다, 당신을 이해하지 못합니다 .. – steven967
모든 문자열을 병합하려면 병합을 사용하십시오. –