在偏移量为0时,TDS响应中出现意外值

时间:2013-09-27 12:23:26

标签: sql-server jdbc

我正在使用JDBC驱动程序版本1.2.2828.100和数据库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 严重:TDSReader @ d5ccfa(ConnectionID:11 TransactionID:0x0000000000000000)在偏移量的TDS响应中得到意外值:0

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

1 个答案:

答案 0 :(得分: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

我希望这会有所帮助。

约翰