【问题标题】:java.sql.SQLException: No suitable driver found for jdbc:sqlserver [duplicate]java.sql.SQLException:找不到适合 jdbc:sqlserver 的驱动程序 [重复]
【发布时间】:2013-07-19 13:28:50
【问题描述】:

我正在开发一个创建 MSSQLSERVER 2008 的 Web 应用程序 数据库动态。

但它给了我

java.sql.SQLException: No suitable driver found for jdbc:sqlserver://localhost:1433;databaseName=master

我的代码是:

String dbName = "db1";
try {
    String url = "jdbc:sqlserver://localhost:1433;databaseName=master";
    Connection connection = DriverManager.getConnection(
                 url,
                 "sa",
                 "roshan14121987");

    Statement statement = connection.createStatement();
    String sqlquery = "CREATE Database \"" + dbName + "\"; ";
    statement.executeUpdate(sqlquery);
    statement.close();

    connection.close();

} catch(Exception e) {
    e.printStackTrace(); 
}

我在 lib 中添加了 sqljdbc4.jar。我在 NetBeans(使用 GlassFish 和 Tomcat 服务器)和 Eclipse IDE(Tomcat 服务器)上都试过了。

另一方面,我已经用简单的桌面应用程序尝试过这个,它在两个 IDE 上都运行良好。在lib中添加了sqljdbc4.jar。

【问题讨论】:

  • 尝试将.JAR添加到tomcat的lib\ 文件夹中。
  • 是的,我已经在 lib 中添加了...
  • 试试:Connection connection = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=master;user=sa;password=roshan14121987");

标签: java sql-server-2008 jdbc sqlexception


【解决方案1】:

在调用DriverManager.getConnection() 之前,您必须加载 SQLServer JDBC 驱动程序。您可以使用Class.forName("xxxx");,其中 xxxx 是适当的驱动程序类(带有包前缀的完全限定名称)。

编辑:这样做Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 加载驱动程序。更多信息请参考MSDN link

【讨论】:

  • +1 不错,可能就是这个!
  • @Bimalesh 是的,它与 Class.forName("xxxx") 一起工作,但是当我在简单的 java 类中使用相同的代码时,我很困惑为什么它在没有 Class.forName("xxxx") 的情况下工作。
  • @Aniket 您的代码必须在某处引用/加载驱动程序,不一定在您的代码中,但可能是其他地方的一些初始化例程。请深入挖掘。
  • 根据我的经验,独立 Java 应用程序不需要 Class.forName 调用,但是当我在 Tomcat Web 应用程序中使用相同的代码时,我需要添加它。
  • @manikantanvsr 这是由于现代版本的 java 运行时使用服务提供者机制 docs.oracle.com/javase/7/docs/technotes/guides/jar/… 的变化。请检查这个答案stackoverflow.com/questions/28220724/… 您可以在您的 jar 包中为此实现服务/META-INF。
【解决方案2】:

在 WEB-INF/lib 下的 war 文件中是 sqljdbc4.jar。这是 $CATALINA_HOME/lib 的备用位置,建议您保持 Web 应用程序自包含。此外,如果您需要更改服务器,只需将战争放入您的 webapps 目录。

您可能还需要 Class.forName([database class]).newInstance,但需要 isn't necessary using a JDBC 4.0 驱动程序。祝你好运,如果您还有其他问题,请发表评论。

【讨论】:

    【解决方案3】:

    错误发生在Tomcat服务器的运行时,对吧?我认为您需要确保您的 sqljdbc4.jar 部署在服务器中。

    【讨论】:

      猜你喜欢
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多