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

解决方案 »

  1.   

    java.sql.SQLException: No suitable driver这个信息不是有提示吗?没有合适的驱动。数据库驱动包的问题。
     
      

  2.   

    No suitable driver
      

  3.   


    我也一直以为是这个问题,但是其他系统也是用的同一个JAR包,都不会报错,并且,也用过MYSQL和SQLSERVER都是一样的问题,求解啊
      

  4.   

     楼主你项目中没有jar包 
      

  5.   

    要包括在项目中,,不是单纯的放在lib下
      

  6.   

    个人觉得你写的这个类有问题,既然是在构造函数中实例化的驱动,但是main方法中没有使用构造函数,而是直接使用的静态方法,所以没有找到合适的驱动。
    建议:构造函数这段代码使用static块包起来,那么在类调用静态方法时已经初始化了,可以试试static {
               try{
                  Class.forName("com.mysql.jdbc.Driver");//("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动
                 }catch(ClassNotFoundException e){
                     System.out.println("驱动没有找到!");
               }             
              System.out.println("驱动加载成功!"); 
    }
      

  7.   

    有合适的驱动。数据库驱动包的问题。重新导入一个jar
      

  8.   

    你直接调用了类的静态方法 你这个类都没初始化 你不new一个DBUtil 构造方法不加载  方法Class.forName("com.mysql.jdbc.Driver");没执行 你到哪里拿到driver
      

  9.   

    从官网上下一个mysql jar 包试试
      

  10.   

    如果是驱动没问题的话,那就是代码写的问题了,  public DBUtil(){            try{                Class.forName("com.mysql.jdbc.Driver");//("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载驱动            }catch(ClassNotFoundException e){                System.out.println("驱动没有找到!");            }            System.out.println("驱动加载成功!");        }
    这个里面的东西都没有打印出来,是代码写的问题哦.
      

  11.   

    要是MYSQL出现这个问题,那肯定是少驱动的JAR包了SQLSERVER的话,2000和2500的驱动(包.类名称)稍微有个小区别,也容易出现这个错误建议换个MYSQL.JAR试试
      

  12.   

    10楼说的对啊,DBUtil都没实例化
      

  13.   

    貌似一般类实例化的步骤是先类的静态初始化,再实例初始化,最后执行构造方法。
    而楼主的main里面直接是调用了DBUtil.getConnection()静态方法,这样DBUtil的楼主定义的构造方法在被调用之前,静态方法就先被调用了,造成驱动没有加载从而发生错误。P.S.其实我也不太清楚
      

  14.   

    重新 build path 一下
      

  15.   

    把 Class.forName("com.mysql.jdbc.Driver");这句写到getConnection()这个方法里面就可以了。
      

  16.   

    getConnection改成         
            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;
            }
      

  17.   

    你的用户名 密码那儿的写法有问题  在数据库前面加上一个前加了一个databasename
    给你一个连接自己去看前几天刚帮一个同事弄了一下http://www.cnblogs.com/cy163/archive/2010/10/06/1844515.html
      

  18.   

    不要分数,只想说,麻烦看一下报错信息,然后google一下,不习惯也可以baidu一下