问题标签 [sqljdbc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - JAVA Runnable .JAR File incomplete execution. Eclipse IDE Runs to completion
Running into an issue with a JAVA application that I'm hoping someone can provide some clarity to. I have a simple Java Application which is being built in the Eclipse IDE. I have JRE 1.8.0_251 installed on PATH.
My application at a basic level performs the following:
- Load a properties file
- Connect to a MSSQL Database based on that SQL File (using java.sql.Connection)
- Queries some data.
- Updates some data.
This all works without issue in Eclipse. However, when I export my file to a runnable .JAR file, it appears to stop after attempting to initialize the database connection. However, it does not throw a SQLException and never returns from the method. I checked my .jar file in 7ZIP to make sure that the SQLJDBC42.jar was packaged in the folder and it was.
The last log line I see when my runnable JAR executes is: Log.info("Connecting to Database...") however, all items run / and are logged in Eclipse execution.
Any ideas? Code below:
java - Intelij Java连接到mysql不起作用
我想创建一个测试来检索/更新数据库条目。我是自动化测试的新手,从未使用过与数据库的连接。为此,我与用户和密码建立了本地连接,并安装了 Northwind 数据库。在 SQL Server Management Studio 中一切正常,但在我尝试运行的以下测试中未建立与数据库的连接:
检查不同的教程后,我在项目模块中配置了相应的 jar:mysql-connector-java-8.0.21 sqljdbc4-2.0
在 Sql Server 配置管理器中,我喜欢 SQL 正在侦听端口 1433,这就是我在连接 url 中指定它的原因)
运行上述代码时,我收到以下错误:com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
吨
进程以退出代码 0 结束
知道出了什么问题吗?谢谢!
classloader - 卸载Java11中类加载器加载的dll
我有一个场景,我需要在 SQL Server 上使用 Windows 身份验证两次使用 Java11 执行数据库连接。最初,为第一次调用加载 sqljdbc_auth.dll 并且连接成功。但是,为了第二次在不同的地方建立连接,它会抛出一个 SQLException 说“sqljdbc_auth.dll 已经被另一个类加载器加载”。所以,我需要在两个调用之间卸载 dll。
在 Java8 版本之前,有一个选项可以通过使用反射机制在类加载器上调用 finalize() 来执行相同操作,但在 Java11 中找不到替代方法
示例代码:
在这里,我将 sqljdbc_auth.dll 放在 PATH 中,并将名为 sql_jdbc.jar 的 jar 放在 urls 列表中,这些与 Java11 兼容
第二个组件中有类似的代码,但它在那里引发异常。加载第二个组件时的异常堆栈跟踪是:
谢谢
java - 错误:“SQL Server 没有返回响应。连接已关闭。”。DSRA0010E: SQL 状态 = 08S01,错误代码 = 0
我正在进行一个项目,将我的应用程序代码库从 Java 1.6 更新到 Java 1.8,当我尝试连接到数据库时,我所做的事情导致了以下错误:
DataSource Configuration: DSRA8040I: Failed to connect to the DataSource jdbc/TIRDB. Encountered java.sql.SQLException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ". DSRA0010E: SQL State = 08S01, Error Code = 0.
我正在使用 Websphere 8.5.5.9 和 sqljdbc4,数据库最近更新到 SQL server 2017。
我已经尝试过的解决方案:
- 将“-Dcom.ibm.jsse2.overrideDefaultTLS=true”添加到 JVM 参数
- 将 sqljdbc 驱动程序更新到 8.4
- 修改 java.security 文件以删除 3DES_EDE_CBC
如果我遗漏了任何重要信息,请告诉我,我可以编辑帖子。
编辑:
我添加了以下 JVM 命令以获得更多信息:-Djavax.net.debug=ssl:handshake:verbose
在日志中,我看到以下信息:
2,调用 closeInternal(true) [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup : 2, SEND TLSv1.2 ALERT: warning, description = close_notify [1/19/21 12: 20:43:730 CST] 0000004a SystemOut O server.startup:2,写入:TLSv1.2 警报,长度 = 2 [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup:2,调用 closeSocket(true) [1/19/21 12:20:43:730 CST] 0000004a SystemOut O server.startup : 2,等待 close_notify 或警报:状态 5 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup:2,收到 EOFException:忽略 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup:2,称为 closeInternal(false) [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup:2,再次调用关闭;状态 = 5 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup : 2, 处理异常:java.io.IOException:SQL Server 没有返回响应。连接已关闭。ClientConnectionId:e3180c28-baa6-4741-8359-008575b697b3 [1/19/21 12:20:43:731 CST] 0000004a SystemOut O server.startup : 2, 调用 closeSocket() 块引用
我认为这表明我的服务器仍在使用 TLSv1,即使数据库设置为仅接受 TSL1.2。我尝试添加 JVM 命令 -Djdk.tls.client.protocols=TLSv1.2 和 -Dhttps.protocols=TLSv1.2 来强制它使用 TLSv1.2,但它没有改变。
java - Spring批处理长时间运行的tasklet数据库超时
鉴于我的工作流作业有这个 Spring Batch 配置,并且我正在为我的 spring 批处理表使用 Sql Server 数据库:
我的应用程序轮询远程服务器上的文件。100 分钟后,当它找不到文件时会poller.pollForFile()
引发运行时异常,并且我的步骤状态为 UNKNOWN,并且应用程序以异常退出:
我认为 sql server db 连接超时并关闭,spring batch 无法执行回滚和数据库更新。理想情况下,我希望状态为 FAILED,即当我使用 H2 在本地运行时,但在这种情况下,我可以使用什么策略或技术来克服这个问题?退出消息没有抛出异常的错误pollForFile()
,而是org.springframework.transaction.TransactionSystemException: Could not roll back JPA transaction; nested exception is org.hibernate.TransactionException: Unable to rollback against JDBC Connectionat
有没有办法解决这个问题?如果我要从 tasklet 转移到面向块并在read()
ItemReader 方法中执行轮询逻辑怎么办?
java - java.lang.NoClassDefFoundError: javax.xml.bind.DatatypeConverterImpl(初始化失败)
我正在尝试从sqljdbc4.jar升级到 sqljdbc4.2.jar作为在Java 8上运行的WebSphere 8.5上的 JDBC 驱动程序, 但是在启动我的应用程序时出现以下异常:
我尝试添加jaxb-api-2.2.11.jar和jaxb-impl-2.2.11.jar ,我仍然得到同样的错误。
更新:在sqljdbc4.jar上运行时,我不必添加jaxb-api或jaxb-impl 并且我的应用程序运行良好,此问题仅在我尝试使用sqljdbc4.2.jar时出现。
java - 从另一个查询中检索值后如何在查询中插入值
我有一个 GET 查询,我将从中获取一组参数。我需要将它们插入到插入语句中。
我需要从行集中获取值并插入到插入查询中。