我正在使用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是指? 如何解决这个问题?
答案 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
我希望这会有所帮助。
约翰