0
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class QueryServlet extends HttpServlet {
@Override
public void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException, ServletException
{
PrintWriter out=res.getWriter();
res.setContentType("text/html");
Connection conn = null;
final String id = UUID.randomUUID().toString();
Map m = req.getParameterMap();
Set s = m.entrySet();
Iterator it = s.iterator();
try {
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/orders", "username", "password");
String sqlStr = "insert into transactions (LogID,KeyName,KeyValue) "
+ "values (?,?,?)";
while(it.hasNext()){
Map.Entry<String,String[]> entry = (Map.Entry<String,String[]>)it.next();
String key = entry.getKey();
String[] value = entry.getValue();
try (PreparedStatement stmt = conn.prepareStatement(sqlStr)) {
stmt.setString(1, id);
stmt.setString(2, key);
stmt.setString(3, value[0].toString());
out.println("<html><head><title>Callback Script</title></head><body>");
out.println("<h3>Inserted into the database:</h3>");
out.println("<p>Parameter: " + key + " and Value = " + value[0].toString() + "</p>");
int updateCount = stmt.executeUpdate();
for (Enumeration<String> en = req.getParameterNames(); en.hasMoreElements();) {
String paramName = en.nextElement();
String paramValue = req.getParameter(paramName);
}
}
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
out.close();
try {
if (conn != null) conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
잘못된 자격 증명과 같은 일부 오류가 MySQL 데이터베이스에서 발생하는 경우 SQL 구문 오류는 모두 처리되고 표시되어야하지만 전혀 표시되지 않습니다.JavaServlet SQL 오류 처리
이것에 대한 조언이나 잘못 코딩 했습니까?
건배
무엇을 표시하려고합니까? catch 블록에서 printStackTrace()를 볼 수 있습니다. 그러면 스택 추적이 콘솔에 표시됩니다. – Susie