2017-03-08 67 views
-1

我的JDBC驱动程序有问题。我无法连接到我的SQL Server数据库。测试下面的代码:JDBC - java看不到已安装的驱动程序

public class Test { 

public static void main(String[] args) { 

     Connection con = null; 
     String conUrl = "jdbc:sqlserver://localhost:1433; databaseName=mydb; user=root; password=psswd;"; 

    try { 
    con = DriverManager.getConnection(conUrl); 
    System.out.println("OK"); 
    } catch (Exception e) { e.printStackTrace(); } 
     finally { 
      if (con != null) try { con.close(); } catch(Exception e) {} 
     } 
}} 

当我尝试运行这段代码我仍然得到错误:

java.sql.sqlexception no suitable driver found for (..) 

我已经加入路径sqljdbc4.jar到CLASSPATH变量和ENU \权威性\ x64的国产化路径变量。我正在JRE 1.8,SQL Server 2014和Windows 7上工作。

+0

添加这些您所使用的IDE,你如何添加驱动程序路径类路径,请 – Satya

+0
+0

你如何运行你的代码?另外:全局'classpath'变量已被弃用,不应使用。您应该在启动应用程序时指定类路径'java -cp sqljdbc4.jar; yourapp.jar测试' –

回答

-1

这是因为您尚未加载驱动程序。只需修改现有的代码

try { 
//this will load the driver 
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

con = DriverManager.getConnection(conUrl); 
System.out.println("OK"); 
} catch (Exception e) { e.printStackTrace(); } 
    finally { 
     if (con != null) try { con.close(); } catch(Exception e) {} 
} 
+2

如果您有新的JDBC驱动程序(支持JDBC 4.0的驱动程序),则这不是必需的。我不知道OP使用的MS SQL Server驱动程序是否是JDBC 4.0驱动程序。 – Jesper

+0

自2006年以来,这不是必需的(除了上下文中具有驱动程序的Web应用程序)。 –

+0

@Mark Web应用程序通常使用JNDI,因此它们将从DataSource(不需要Class.forName)获得连接。此外,类加载器并不总是加载驱动程序,即使它是类型4驱动程序,因此显式调用Class.forName可能会有所帮助。 –