package com.samton.shopping.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
private final static String url ="jdbc:mysql://localhost:3306/shopping";
private final static String user ="root";
private final static String password ="101186";
public static Connection conn=null;
public DBUtil(){
try{
Class.forName("com.mysql.jdbc.Driver");//("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动
}catch(ClassNotFoundException e){
System.out.println("驱动没有找到!");
}
System.out.println("驱动加载成功!");
}
public static Connection getConnection(){
// String url="jdbc:mysql://localhost:3306/shopping";//"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shopping";
// String user="root";//"sa";
// String password="101186";
try {
// return DriverManager.getConnection(url,user,password);//连接sqlserver数据库
return DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Connection conn = DBUtil.getConnection();
System.out.print("连接成功!");
System.out.println(conn);
}
}上面是我连接数据库的代码,报错如下java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.samton.shopping.util.DBUtil.getConnection(DBUtil.java:25)
at com.samton.shopping.dao.impl.PlacardDaoImpl.findAll(PlacardDaoImpl.java:223)
at com.samton.shopping.service.impl.PlacardServiceImpl.getAllPlacards(PlacardServiceImpl.java:49)
at com.samton.shopping.servlet.PlacardServlet.listAllPlacard(PlacardServlet.java:196)
at com.samton.shopping.servlet.PlacardServlet.doPost(PlacardServlet.java:56)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at com.samton.shopping.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:23)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at com.samton.shopping.util.DBUtil.getConnection(DBUtil.java:25)
at com.samton.shopping.dao.impl.PlacardDaoImpl.findAll(PlacardDaoIm 看这意思好像就是我这句return DriverManager.getConnection(url,user,password)有问题,但真心的看不懂Java数据库MySQL
我也一直以为是这个问题,但是其他系统也是用的同一个JAR包,都不会报错,并且,也用过MYSQL和SQLSERVER都是一样的问题,求解啊
建议:构造函数这段代码使用static块包起来,那么在类调用静态方法时已经初始化了,可以试试static {
try{
Class.forName("com.mysql.jdbc.Driver");//("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动
}catch(ClassNotFoundException e){
System.out.println("驱动没有找到!");
}
System.out.println("驱动加载成功!");
}
这个里面的东西都没有打印出来,是代码写的问题哦.
而楼主的main里面直接是调用了DBUtil.getConnection()静态方法,这样DBUtil的楼主定义的构造方法在被调用之前,静态方法就先被调用了,造成驱动没有加载从而发生错误。P.S.其实我也不太清楚
public static Connection getConnection(){
// String url="jdbc:mysql://localhost:3306/shopping";//"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=shopping";
// String user="root";//"sa";
// String password="101186";
try{
Class.forName("com.mysql.jdbc.Driver");//("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动
}catch(ClassNotFoundException e){
System.out.println("驱动没有找到!");
}
System.out.println("驱动加载成功!");
try {
// return DriverManager.getConnection(url,user,password);//连接sqlserver数据库
return DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
给你一个连接自己去看前几天刚帮一个同事弄了一下http://www.cnblogs.com/cy163/archive/2010/10/06/1844515.html