簡體   English   中英

如何解決此錯誤:數據類型text和varchar在等於運算符中不兼容?

[英]How to resolve this error: The data types text and varchar are incompatible in the equal to operator?

我在Microsoft sql服務器管理工​​作室中有一個名為Userdetails的表,其列名稱為[Email address] ,其數據類型為varchar(50) 現在,我正在jsp中訪問此變量以將該變量與另一個名為email2的數據類型為text的變量進行比較。不幸的是,我遇到了一個錯誤。

這只是我的代碼的一部分。

String str=request.getParameter("email2");
ResultSet rs = st.executeQuery("select [Email address],Username from Userdetails where [Email address]='" + str + "');

第一個問題:直接在SQL中包含值。 不要那樣做-只是要求進行SQL注入攻擊

而是使用帶有參數值的預備語句。 您可能會發現這足以解決問題。

PreparedStatement pst = conn.prepareStatement
   ("select [Email address], Username from Userdetails where [Email address]=?");

// This may give the same problem...
pst.setString(1, str);

// but this may fix it
// pst.setClob(1, new StringReader(str));

ResultSet results = pst.executeQuery();

(顯然,只能以一種或另一種方式設置參數。)

不要忘記在finally塊中關閉該語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM