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錯誤
對此的任何意見或我編碼錯了嗎?
乾杯
你想顯示什麼,在哪裏?我所看到的只是printStackTrace()在你的catch塊中,它應該在你的控制檯中顯示堆棧跟蹤。 – Susie