2013-11-24 21 views
0
while(rs.next()) 
{ 
    String key=rs.getString(1); 
    String val=rs.getString(2);  
    it=ar1.get(k).toString(); 
    if(it.trim().equals(key.trim())) 
    { 
     val=val.substring(1); 
     val=val+"1"; 
    } 
    else 
    { 
     val=val.substring(1); 
     val=val+"0"; 
    } 

    st = con.prepareStatement("update win set seq=? where keyy=?"); 
    st.setString(1,val); 
    st.setString(2,key); //here i am getting exception 
    st.executeUpdate(); 
    st.close(); 
} 

如果我在表爲文本改變序列和keyy的數據類型,那麼它顯示的數據類型的文字和文字都在等於運算符數據類型varchar(max)和文本在等於運算符中不兼容。在SQL Server2005中如何解決?

+1

擺脫您的'
'標籤。這不是你在Stackoverflow上格式化代碼的方式。 –

+1

我不打算開始清理。刪除所有'
'標籤並使用代碼格式化按鈕:{}' –

+0

對不起,我刪除了它們 – user2394030

回答

1

不符合TEXT數據類型天長地久有沒有亂。但是,拋開關於文本「關鍵」列智慧的問題,您需要使用like。您不能在TEXTNTEXT(=,< =等)上使用標準比較運算符。 您可以省略通配符,因此它的行爲將完全匹配。所以,如果你keyy列文本:

update win set seq=? where keyy like ? 

BTW,TEXTNTEXT已棄用的SQL Server的幾個版本,我敢肯定,這些天他們打算放棄它。您應該考慮轉換爲CHARVARCHAR

+0

我將seq和keyy數據類型設置爲varchar(MAX),但它仍顯示「varchar(MAX)和文本不兼容」 。當我製作他們的數據類型文本時,它顯示「文本和文本不兼容」。我應該對代碼或表格做些什麼改變? – user2394030

+0

您需要向我們展示您正在查詢的表的DDL。 – Andrew

+0

更改爲CHAR解決了我的問題。謝謝 。也會嘗試使用like進行比較 – user2394030

相關問題