Database 无法使用jdbc连接到数据库
嗨,我对jsp和servlets很陌生,所以我很难理解为什么我不能做一个简单的查询。代码用于登录页面,其中用户servlet查询用户发送的数据,然后将其与数据库进行匹配,当找到匹配项时,返回login==true,然后执行另一个查询以获得与用户名和密码匹配的员工id号Database 无法使用jdbc连接到数据库,database,jsp,servlets,login,connection,Database,Jsp,Servlets,Login,Connection,嗨,我对jsp和servlets很陌生,所以我很难理解为什么我不能做一个简单的查询。代码用于登录页面,其中用户servlet查询用户发送的数据,然后将其与数据库进行匹配,当找到匹配项时,返回login==true,然后执行另一个查询以获得与用户名和密码匹配的员工id号 import java.sql.Connection; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletExc
import java.sql.Connection;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.*;
import javax.servlet.*;
import java.io.*;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Driver;
import java.sql.DriverManager;
import javax.servlet.http.HttpSession;
public class Login extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
HttpSession session = request.getSession();
Connection conn = null;
PreparedStatement prepState = null;
Statement state = null;
ResultSet result = null;
boolean login = false;
String username = request.getParameter("username");
String password = request.getParameter("password");
String checkLogin = ("SELECT * FROM users WHERE username = ? AND password = ?");
try{
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/matrix","","");
prepState = conn.prepareStatement(checkLogin);
prepState.setString(1, username);
prepState.setString(2, password);
result = prepState.executeQuery();
login = result.next();
if(login){
out.println("login");
String id = result.getString(1);
String getUser = ("SELECT empLastName, empFirstName FROM employees WHERE empID = ? ");
prepState = conn.prepareStatement(getUser);
prepState.setString(1, id);
result = prepState.executeQuery();
String first = result.getString(2);
String last = result.getString(1);
out.println("<html>");
out.println(first + " " + last);
out.println("</html>");
}
}catch(Exception e){
out.println("ERROR");
e.printStackTrace(System.err);
}
}catch(Exception db){
} finally {
out.close();
}
}
导入java.sql.Connection;
导入java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入javax.sql.*;
导入javax.servlet.*;
导入java.io.*;
导入java.sql.PreparedStatement;
导入java.sql.ResultSet;
导入java.sql.SQLException;
导入java.sql.Statement;
导入java.sql.Driver;
导入java.sql.DriverManager;
导入javax.servlet.http.HttpSession;
公共类登录扩展了HttpServlet{
受保护的void processRequest(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
setContentType(“text/html;charset=UTF-8”);
PrintWriter out=response.getWriter();
试一试{
HttpSession session=request.getSession();
连接conn=null;
PreparedStatement prepState=null;
语句状态=null;
ResultSet result=null;
布尔登录=false;
字符串username=request.getParameter(“用户名”);
字符串密码=request.getParameter(“密码”);
字符串checkLogin=(“从用户名=?和密码=?”的用户中选择*”;
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/matrix","","");
prepState=conn.prepareStatement(检查登录);
prepState.setString(1,用户名);
prepState.setString(2,密码);
结果=prepState.executeQuery();
login=result.next();
如果(登录){
out.println(“登录”);
String id=result.getString(1);
字符串getUser=(“从empID=?”的employees中选择empLastName、empFirstName);
prepState=conn.prepareStatement(getUser);
prepState.setString(1,id);
结果=prepState.executeQuery();
String first=result.getString(2);
String last=result.getString(1);
out.println(“”);
out.println(第一个+“”+最后一个);
out.println(“”);
}
}捕获(例外e){
out.println(“错误”);
e、 printStackTrace(System.err);
}
}捕获(异常数据库){
}最后{
out.close();
}
}
这是我得到的错误
INFO: The start() method was called on component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Matrix]] after start() had already been called. The second call will be ignored.
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4004)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at Login.processRequest(Login.java:57)
at Login.doPost(Login.java:119)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:394)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
INFO:在调用start()之后,对组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Matrix]]调用了start()方法。第二次调用将被忽略。
java.sql.SQLException:拒绝用户“root”@“localhost”的访问(使用密码:是)
位于com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
在com.mysql.jdbc.MysqlIO.checkErrorPacket上(MysqlIO.java:3566)
在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)上
在com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)上
位于com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4004)
位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2312)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:774)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:49)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
位于java.lang.reflect.Constructor.newInstance(Constructor.java:513)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:409)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
位于java.sql.DriverManager.getConnection(DriverManager.java:582)
位于java.sql.DriverManager.getConnection(DriverManager.java:185)
在Login.processRequest(Login.java:57)
在Login.doPost(Login.java:119)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
在org.a
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/matrix","root","");