jdbc操作SqlServer时执行ps.executeQuery()速度很慢(时间很长)的解决方法

[size=large]jdbc链接SqlServer时发现执行查询语句速度很慢,查了很多方法没找到解决方法

于是在SqlServer的jdbc驱动文档中(如果机器上安装了安驱动,在安装目录下找到\Help\jdbcsqlsrv3.html文件)有这样一个属性[/size]
[size=xx-large]SendStringParametersAsUnicode[/size]
[size=large]该属性的表述如下:
SendStringParametersAsUnicode={true | false}. Determines whether string parameters are sent to the SQL Server database in Unicode or in the default character encoding of the database. True means that string parameters are sent to SQL Server in Unicode. False means that they are sent in the default encoding, which can improve performance because the server does not need to convert Unicode characters to the default encoding. You should, however, use default encoding only if the parameter string data that you specify is consistent with the default encoding of the database.
The default is true.
如果该属性的值为true(默认),则将string参数以unicode形式传到数据库;
如果将该属性值设为false,则已默认字符编码传到数据库,这样可以提高性能,原因是服务器不需要编码字符转换

于是在jdbc的URL后面加上sendStringParametersAsUnicode=false后,发现执行速度变快了[/size]

[size=x-large]PS:虽然用了这个方法,但是有时速度还是会慢,因为是在本机做的测试,可能也会和机器性能有关,所以有条件的朋友可以在服务器上进行测试,看看前后的性能是否真的改变了[/size]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个异常消息指示在使用 JDBC 连接 SQL Server 数据库发生了一个问题,具体原因是你没有正确执行一个 SQL 语句。 首先,确保你正在使用正确的语句执行代码,并确保该语句在数据库中是有效的。如果你已经确认语句正确,那么可以考虑检查数据库连接,确保它是正确的,并且没有任何阻止你执行该语句的问题。 如果仍然无法解决该问题,您可以在代码中添加错误处理代码,以打印出更多的错误详情,以帮助您更清晰地了解问题的根源。 如果仍然无法解决问题,您可以在社区查询帮助或寻求专业的技术支持。 ### 回答2: 在使用SQL Server JDBC驱动,如果遇到"sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果"这个异常,一般是因为没有正确执行SQL语句或未执行语句就尝试获取结果。处理方法如下: 1. 确保已正确连接到数据库,并正确选择了数据库。首先,检查数据库连接的URL、用户名和密码是否正确,并且数据库是否处于可用状态。其次,确保已经选择正确的数据库,使用USE语句或在URL中指定数据库。 2. 确认SQL语句是否正确。检查SQL语句的语法和逻辑是否正确,包括表名、列名的拼写是否正确,以及SQL语句是否符合数据库的规范。 3. 确保已正确执行SQL语句。在执行SQL语句之前,使用Statement或PreparedStatement对象的executeexecuteUpdate或executeQuery方法执行SQL语句。例如,对于查询语句,可以使用ResultSet对象来获取结果。 以下是一个简单的示例代码,用于查询表中的数据: ```java String sql = "SELECT * FROM table_name"; try (Connection connection = DriverManager.getConnection(url, username, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery(sql)) { while (resultSet.next()) { // 处理结果数据 } } catch (SQLException e) { e.printStackTrace(); } ``` 在这个示例中,我们使用executeQuery方法执行了查询语句,并使用ResultSet对象来遍历结果数据。 通过这些处理方法,应该能够解决"sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果"异常。如果问题仍然存在,可能是其他因素导致的异常,需要进一步检查和调试。 ### 回答3: 当我们出现 "sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果" 异常,可以采取以下几种方法来处理: 1. 检查SQL语句的正确性:首先,需要确保SQL语句的语法是正确的,检查语句中是否缺少关键字或拼写错误。也可以通过在数据库管理工具中手动执行SQL语句,以确认语句本身是否有问题。 2. 检查数据库连接是否正常:如果数据库连接不正常,也有可能导致此异常。可以检查数据库服务器的运行状态或尝试重新建立连接。 3. 检查SQL语句是否执行:该异常通常出现在没有执行SQL语句就试图获取结果。可以通过调用 `execute()` 或 `executeQuery()` 方法执行SQL语句,然后再尝试获取结果。 4. 检查结果集的获取方式:如果使用的是 `execute()` 方法,它只返回一个布尔值,表示SQL语句是否执行成功,并不会返回结果集。而应该使用 `executeQuery()` 方法来返回一个结果集。请确保使用正确的方法来获取结果。 5. 检查结果集的关闭:在使用完结果集后,需要手动关闭结果集以释放资源。可以通过调用 `resultSet.close()` 方法来关闭结果集。 6. 检查代码的调用顺序:在执行SQL语句和获取结果之间,需要保证它们的执行顺序是正确的。首先执行SQL语句,然后再获取结果集。 综上所述,当出现 "sqlserver.jdbc.SQLServerException: 必须执行该语句才能获得结果" 异常,我们需要检查SQL语句的正确性、数据库连接、SQL语句的执行和获取结果的顺序,以及结果集的关闭等方面,找出可能的问题并进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值