从Servlet连接MySQL无法正常工作

我正在制作一个小应用程序,所以我可以将我的笔记从我的课程发布到服务器。 我在数据库端使用JDBC和MySQL,在应用程序端使用JSP / Servlet。

我编写了一个独立的java应用程序,它与我的servlet代码非常相似,并且工作正常; 我的servlet代码运行不正常。

属性定义:

static final String DB_URL = "jdbc:mysql://localhost/DATASET"; static final String USER = "user"; static final String PASS = "pass"; Connection con = null; Statement s = null; 

doPost方法:

  final String STATEMENT = "INSERT INTO FILE(upload_time, filename, class, data) VALUES(CURTIME(), '" + request.getParameter("file") + "', '" + request.getParameter("cls") + "', '" + request.getParameter("comm") + "')"; final String STATEMENT2 = "INSERT INTO FILE(upload_time, filename, data) VALUES(CURTIME(), 'booga33.txt', 'ooga booga dooga22222222222222!')"; try { con = DriverManager.getConnection(DB_URL, USER, PASS); s = con.createStatement(); s.executeUpdate(STATEMENT2); } catch(SQLException i) { PrintWriter w = response.getWriter(); w.println(i.getErrorCode()); } catch(Exception e) { PrintWriter w = response.getWriter(); w.println("error occured."); } 

它抛出一个SQLException并给我一个错误代码0 ,这是一个无效的登录。 用户名/密码是正确的,但我认为URL格式错误(即使这正是我在java应用程序中使用的数据库url。此外, /DATASET是我的架构的正确名称。

另外,我知道如果许多用户使用它,我的实现会出现问题。 我只想让它与单个用户合作,然后我会担心很多。

编辑:我使用tomcat作为我的JSP / Servlet页面的web服务器,我也将mysql-connector放在我的项目(Eclipse)的Referenced Libraries部分。

对此有任何帮助非常感谢!!!!

编辑:

 java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/DATASET at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at DoSubmit.doPost(DoSubmit.java:38) at javax.servlet.http.HttpServlet.service(HttpServlet.java:648) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Unknown Source) 

解决方案:如果使用eclipse IDE,将MySQL Connector JAR放入WEB-INF->lib 。 另外, Class.forName(driver); 在建立连接之前需要。

没有为jdbc找到合适的驱动程序:mysql:// localhost:3306 / DATASET

首先将JDBC Connector放在类路径中,然后从此处下载

如果你使用maven,请使用:

   mysql mysql-connector-java 5.1.13  

第二,确保您的连接信息正确无误:

 public class CreateConnection { String driver = "com.mysql.jdbc.Driver"; String DB_username = "root"; String DB_password = "pass"; String DB_URL = "jdbc:mysql://localhost:3306/DATABASE"; public Connection getConnection() { try { Class.forName(driver); java.sql.Connection con = DriverManager.getConnection(DB_URL, DB_username, DB_password); return con; } catch (ClassNotFoundException | SQLException e) { System.out.println("Exception " + e); return null; } } } 

我建议使用Prepared Statement代替你的方式,这可以是一种安全的练习方式,你可以在这里了解这个准备好的声明

编辑

就像@Gimby说:确定你的jar在正确的位置,所以如果你使用Eclipse使用如何在eclipse中的类路径上放置文件? 如果Netbeans使用如何在Netbeans中设置类路径?

 import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class Test { static final String DB_URL = "jdbc:mysql://localhost:3306/DATASET"; static final String USER = "user"; static final String PASS = "pass"; static Connection con = null; static Statement s = null; public static void main(String[]args){ final String query = "INSERT INTO FILE(upload_time, filename, data) VALUES(CURTIME(), 'booga33.txt', 'ooga booga dooga22222222222222!')"; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(DB_URL, USER, PASS); s = con.createStatement(); //s.executeUpdate(query); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } } 
 //Add MySQL jdbc jar file into project lib. public static Connection con; Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Database name", userid,password);