java为什么我在JSP和JDBC和MySQL中遇到连接失败错误
我正在尝试连接到mysql数据库并执行查询
但是数据库连接在负载时失败
Pass和userID都是正确的
我在netbeans上没有任何错误
这是我的密码
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ page import="java.sql.*" %>
<% Class.forName("com.mysql.jdbc.Driver"); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Real Time Stock Price Quote</h1>
<form action="" method="get">
<p>Search:</p>
<input type="text" name="q" placeholder='search here'><br>
<input type="submit" value="Submit" ><br>
</form>
<%
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
Class.forName("com.mysql.jdbc.Driver");
conn = (Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/stocklist","root","");
st = conn.createStatement();
String qry = request.getParameter("q");
String data;
qry= "SELECT * FROM `stocks` WHERE `name` LIKE '%qry%'";
rs = st.executeQuery(qry);
if(!conn.isClosed()){
%>
<P>connected DB </P>
<%= qry %>
<%
}
%>
<p> <% rs.getString("symbol"); %> </p>
<%
}catch(Exception e){
%>
<h2>Error! Database Connection Failed!!</h2>
<%
}
%>
</body>
</html>
以下是我得到的输出:
实时股票报价 搜索:
在这里搜索
连通数据库
从stocks
中选择*其中name
类似于“%qry%”
错误数据库连接失败
为什么它会连接然后失败强>
# 1 楼答案
异常中有4个有用的信息位:堆栈跟踪、消息、类型和原因
你把4件东西都扔掉了,换成“失败!”
“不要那样做”的经典案例
让例外发生;您的日志将包含所有这些信息供您查看。从那里你可能会找出问题所在
如果没有这些信息,没有开发人员机器的完整克隆,没有人能在这里提供帮助
# 2 楼答案
使用try with资源自动关闭连接、(准备好的)语句和结果集。它的语法有点奇怪:
try(DECLARATIONS) {....}
。它的优点是它还可以关闭异常和返回/中断等然后必须填写
q
参数Always use a PreparedStatement:SQL注入
让例外在它所有的荣耀中显现出来
`<;%=1+2%>;是在HTML中插入一个表达式
您的错误可能是表中没有类似“qry”的内容,并且没有调用
rs.next()
读取第一条/下一条记录