簡體   English   中英

在條件不起作用的情況下進行內部聯接

[英]INNER JOIN with Where condition not working

我在C#ASP.NET MVC中有一個SQL查詢,它在沒有WHERE條件的情況下也能很好地工作,但是在WHERE條件下,它是行不通的。

這是SQL語句:

string strSQL = "SELECT u.USERID, u.NAME, io.CHECKTIME, io.CHECKTYPE, io.SENSORID 
                 FROM USERINFO u 
                 INNER JOIN CHECKINOUT io ON u.USERID = io.USERID 
                 WHERE u.NAME = " + conditionSearch.NAME;

使用conditionSearch.NAME是視圖中的變量,我檢查了一下,可以搜索需要的值。

能否請你告訴我什么是錯的這個WHERE條件? 謝謝!

此處的直接解決方法是將名稱放在WHERE子句中的單引號內,以創建字符串文字:

string strSQL = "SELECT u.USERID, u.NAME, io.CHECKTIME, io.CHECKTYPE, io.SENSORID
    FROM USERINFO u INNER JOIN CHECKINOUT io ON u.USERID = io.USERID
    WHERE u.NAME = '" + conditionSearch.NAME + "'";

但是 ,直接連接以形成SQL查詢字符串通常是嚴重的壞習慣。 更好的方法是使用帶名稱的占位符的預准備語句。 也就是說,使用如下查詢:

SELECT u.USERID, u.NAME, io.CHECKTIME, io.CHECKTYPE, io.SENSORID
FROM USERINFO u
INNER JOIN CHECKINOUT io
    ON u.USERID = io.USERID
WHERE u.NAME = ?;

然后,讓您的數據庫擔心如何正確綁定name參數。

此處的直接解決方法是將名稱放在WHERE子句中的單引號內,以創建字符串文字:

蒂姆,您好,謝謝答復。 我嘗試使用db中的單引號精確命名,但結果仍返回null。

哦,但是我嘗試了您的解決方案('“ + conditionSearch.NAME +”'“),它運行良好,非常感謝!

暫無
暫無

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

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