gpt4 book ai didi

mysql - Java Servlet 处理 SQL 错误

转载 作者:行者123 更新时间:2023-11-29 12:57:44 25 4
gpt4 key购买 nike

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 语法错误,但它根本不显示。

对此有什么建议还是我编码错误?

干杯

最佳答案

您拥有的内容只会打印到日志中。要打印到页面,请使用 out.print

catch (SQLException ex) 
{
ex.printStackTrace(); //print to log
out.print("<br/>Error: " + ex.getMessage()); //print to page
}

出现凭据错误时,您不希望将实际消息打印到页面,因为它可能包含凭据。因此,您应该使用自己的 try-catch 隔离打开连接的部分,该部分可以嵌套在其中。

try
{
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/orders", "username", "password");
}
catch(Exception ex_connError)
{
out.print("<br/>Error making db connection");
}

关于mysql - Java Servlet 处理 SQL 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com