Java应用指定SQL Server数据库后仍连接错误库的问题求助
Java Swing项目SQL Server连接异常:配置目标库为acadio却连接到java库
问题描述
基于Swing开发的Java课程项目,在学校笔记本通过Git拉取代码后出现异常:
- 已在新电脑SQL Server实例中配置好
acadio数据库,且修改了登录用户名和密码 - 数据库端和代码配置看似正常,但应用始终连接到用于测试的
java库,导致Swing组件展示错误数据 - 已尝试刷新/重启项目、重启Eclipse、删除重建
acadio库,均无效
环境信息
- Eclipse版本:2023-09 (4.29.0),此前使用2024-03版本
- 操作系统:Windows 11 x86_64
- Java版本:17.0.8.1(Eclipse Adoptium)
数据库连接代码
package services; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class BD { public Connection con = null; public PreparedStatement st = null; public ResultSet rs = null; private final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; private final String DATABASENAME = "acadio"; private final String URL = "jdbc:sqlserver://localhost;databasename=" + DATABASENAME; // 已隐去登录信息 private final String LOGIN = "*******"; private final String PASSWORD = "*****"; // private final String INTEGRATED_SECURITY = "true"; /** * 建立数据库连接 * @return 连接成功返回true,失败返回false */ public boolean getConnection() { try { Class.forName(DRIVER); con = DriverManager.getConnection(URL, LOGIN, PASSWORD); System.out.println("Connected successfully!"); return true; } catch (SQLException error) { System.out.println("Error connecting to the database: " + error.toString()); return false; } catch (ClassNotFoundException error) { System.out.println("Error loading the driver: " + error.toString()); } return true; } /** * 关闭连接并释放资源 */ public void close() { } public static void main(String[] args) { BD bd = new BD(); bd.getConnection(); } }
排查与解决方案
验证实际连接URL
在getConnection方法中添加打印语句,确认生成的URL是否正确:System.out.println("实际连接URL: " + URL);运行
main方法,检查输出的URL是否确实包含databasename=acadio,排除字符串拼接错误。检查SQL Server登录用户的默认数据库
- 打开SQL Server Management Studio,找到代码中
LOGIN对应的登录账号 - 右键选择「属性」,查看「默认数据库」选项,若设置为
java,会导致连接时自动切换到该库 - 将默认数据库修改为
acadio,或确保URL中显式指定的databaseName优先级生效(注意SQL Server大小写敏感性场景)
- 打开SQL Server Management Studio,找到代码中
清理Eclipse编译缓存
- 右键项目 → 「Clean...」,选择当前项目执行清理
- 手动删除项目下的
bin目录,重新编译项目,避免旧编译文件残留导致的配置不生效
排查配置文件或硬编码覆盖
- 检查项目中是否存在数据库连接配置文件(如
.properties、.xml),确认代码是否实际读取配置文件而非类中常量 - 全局搜索项目中包含
java库名的代码,排查是否有其他地方硬指定了数据库名称
- 检查项目中是否存在数据库连接配置文件(如
直接验证连接后的数据库
在连接成功后执行查询,确认当前连接的数据库:if (con != null) { ResultSet rs = con.createStatement().executeQuery("SELECT DB_NAME()"); if (rs.next()) { System.out.println("当前连接的数据库: " + rs.getString(1)); } }此步骤可直接定位连接的实际库名,明确问题根源。
内容的提问来源于stack exchange,提问作者Samuel Francisco
相关产品推荐
相关产品推荐

