1

我正在使用 JDBC 驱动程序版本 1.2.2828.100 和 Database Sql Server 2008 R2。

我通过加入三个包含 1,40,000 行的表来进行搜索操作

SELECT USERID, USERLOGIN, DOMAIN FROM USER (nolock), USER01 (nolock), DOMAIN (nolock) WHERE USERLASTNAME= "aa" AND USERFIRSTNAME = "bb" AND USERDOMAINID = DOMAINID AND USERID = USER01ID ORDER BY USERID

我收到以下错误,我的应用程序立即崩溃

com.microsoft.sqlserver.jdbc.TDSReader throwInvalidTDS SEVERE: TDSReader@d5ccfa (ConnectionID:11 TransactionID:0x0000000000000000) 在偏移量:0 处的 TDS 响应中得到了意外值

偏移量:0 处的 TDS 响应指的是什么?如何解决这个问题?

4

1 回答 1

0

好的,TDS 是表格数据流。这是客户端(机器)与数据库(服务器)对话的方式。您正在使用 microsoft jdbc 驱动程序。

以下是一些改进代码和解决问题的方法。

1 - 请使用 ANSI 20xx 标准。

这意味着查询将被重写如下。

-- Updated using newer syntax
SELECT 
    U0.USERID, 
    U0.USERLOGIN, 
    D0.DOMAIN 
FROM 
    USER as U0 with (nolock) INNER JOIN 
    USER01 as U1 with (nolock) ON U0.USERID = U1.USER01ID  INNER JOIN 
    DOMAIN as D0 with (nolock) U0.USERDOMAINID  = D0.DOMAINID 
WHERE 
    U0.USERLASTNAME= "aa" AND 
    U0.USERFIRSTNAME = "bb" 
ORDER BY 
    U0.USERID

我不提倡(nolock),但那是一场完全不同的战斗。

2 - 接下来,看看这篇文章。用户发现类型案例导致了问题。确保数据类型与 JAVA 兼容。

http://adrielservice.com/blog/?p=362

我希望这有帮助。

约翰

于 2013-09-27T12:46:38.400 回答