2011-12-08 24 views
1

如果我有一個名爲USER的表,並且我有3列user_name,user_passworduser_surname,其中user_nameuser_password設置爲主鍵。當用戶登錄到程序中時,他們需要輸入姓名和密碼。SQL:這是否可能用於成對比較

現在我需要驗證這種組合,所以我需要知道,如果我可以像下面成對比較:

SELECT * 
FROM user 
WHERE (user_name, user_password) = ('&name', '&password'); 

我知道,你可以使用像上面成對比較一個IN,但不知道你是否可以使用=。問題是用戶需要輸入兩個值(名稱,密碼),然後需要在表格中進行檢查。

請我需要建議

+1

什麼數據庫?對元組比較的支持各不相同。 – pilcrow

+0

對不起,我必須問爲什麼是user_name和密碼主鍵的一部分? user_name應該足夠了;如果不是,那麼後面會遇到一些邏輯問題:例如:Joe使用pwd 1234創建user1,並且擁有大量他喜歡存儲在數據庫中的數據。 Jane出現並創建了帶有密碼1234的user1,並獲得了重複的密鑰修復。 Jane然後使用pasword 1234與user1一起登錄並開始下載Joes的所有數據......非常安全。 – xQbert

+0

問題是,如果我只使用名稱作爲主鍵,那麼發生重點違規的可能性就會更大,因爲可能有兩個同名的人呢?我還擔心這一點,因爲我試圖尋找像手機號碼或身份證號碼那樣對每個人都是獨一無二的價值,但是一些用於該計劃的用戶可能不具備這兩者中的任何一個。 – Japster

回答

0

在T-SQL ,我們使用

Select * 
From User 
Where User_Name = @Uname AND Password = @Passwd 

我認爲你們的比較是不可能的。

由於使用的是Access

Select * 
From User 
Where User_Name = ? AND Password = ? 
+0

非常感謝,我不知道如何在Access數據庫中使用這些變量,因爲我仍然是一名學生,可以用於Oracle。因此,您在一個問題中回答了兩個問題:-D – Japster

+0

您也可以在Access中使用命名參數:'select * from User其中User_Name = par_user_name和Password = par_password'。 Jet只是假定它不能解析的任何標識符都是一個參數。 – phoog

2

爲什麼不乾脆:

SELECT * 
    FROM user 
    WHERE user_name = '&name' 
     AND user_password = '&password'; 
+0

我將使用訪問數據庫。 – Japster

+0

@Japster:你不能在Access中這樣做?這是最基本的SQL,真的...... –

+0

我只是想知道關於pairwise和使用()而不是AND – Japster

0

與數據庫試試吧,如果它不工作只使用

SELECT * FROM user WHERE user_name = '&name' AND user_password = '&password' 
+0

所以通過使用AND它是使用成對比較相同? – Japster

+0

是的,兩個條件必須爲一行才能匹配。 – Matten

0
SELECT * FROM user WHERE user_name = '&name' AND user_password = '&password'=; 
相關問題