【发布时间】:2013-05-19 01:39:14
【问题描述】:
我真的在这里看到了一个谜。我在 Eclipse 中创建了一个 Java 程序并建立了 JDBC 连接。代码如下:
import java.sql.*;
public class Login {
public static void main(String[] args) {
try {
// Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection connection = DriverManager
.getConnection("jdbc:sqlserver://localhost;databaseName=testdb; integratedSecurity=true;");
//adding port 1433 doesn't make a difference
System.out.println("Connection successful");
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("select * from testtable");
while (rs.next()) {
line = rs.getString(2);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
当我在 Eclipse 中运行它时,一切都很好。数据库和表都很好,Java Built Path中的库和身份验证都设置好了,我得到了我想要的结果,即“Hello World”,它是所选表中的一个字符串。
但创建可执行 JAR 文件并运行它会引发异常“此驱动程序未配置为集成身份验证”。它甚至没有连接,因此即使数据库中出现错误也无所谓。
更令人困惑的是,几周前,我还创建了一个可执行的 JAR 文件,并且它工作了!
操作系统:Windows Vista Home Premium x86
JDBC 驱动位置:“C:\sqljdbc_4.0\enu\sqljdbc4.jar”
本机库位置:“C:\sqljdbc_4.0\enu\auth\x86”
Java 版本:Java 7 Update 17 和 JDK 7 Update 17
之前,我使用的是 Update 21,但我改回来检查驱动程序是否可能是原因。
那么,有什么建议吗?不胜感激!
【问题讨论】:
-
您是否将系统属性“java.library.path”设置为您的 sqljdbc_auth.dll 的位置?
-
“我希望这是一个 SSCCE” - 这会让其他人重现您的问题吗?如果不是,则不是 SSCCE。
-
如何执行jar?
-
关于SSCCE:如果人们复制粘贴代码,添加一些东西(即一个JFrame)以便他们可以在创建和执行JAR文件时看到问题,他们应该是能够看到问题。如果它不破坏简单性,我可以立即提供代码,所以人们真的只需要复制粘贴。关于sqljdbc_auth.dll:在添加的sqljdbc4.jar中,我将native library location设置为:"C:/sqljdbc_4.0/enu/auth/x86 "(当然存在)
-
横向建议:一定要用SQL server吗?对于作业,嵌入式数据库会更好地工作
标签: java sql-server eclipse jdbc jar