2012-10-28 41 views
-3

我正在使用VS2010 c#。檢查用戶名是否在c數據表中#

我有一個包含用戶名和密碼的數據表:

____________ 
andy | 1234 
joni | 5678 
lara | 4567 

如何形成一個功能,將看到什麼用戶在文本框和審查進入,如果它是在數據庫或沒有?

+0

這取決於你沒有提供的細節。例如,DataTable看起來像什麼? –

+0

是不是我給的足夠的3列?這些列的名稱是用戶名和密碼。 – jonatr

+0

任何主鍵?唯一性約束?等等?另外,你讓我假設你所有的數據都已經在'DataTable'中,但那只是因爲你沒有包含填充表的代碼,所以我必須猜測。 –

回答

4

你可以寫一個SQL Function,並做一些事情,如:

CREATE FUNCTION [dbo].[CheckUserExists] (@User NVARCHAR(50)) 
RETURNS BIT 
AS 
BEGIN 
DECLARE @RetVal INT 

SELECT @RetVal = COUNT(User.UserId) 
FROM 
    Users 
WHERE 
    Users.Username = @User 

IF @RetVal > 0 
BEGIN 
    RETURN 1 
END 
    RETURN 0 
END 

然後在你的C#程序,你可以使用ADO.NET做:

private bool UserExists(string username) { 
    SqlCommand cmd = new SqlCommand("CheckUserExists", conn); 

cmd.CommandType = CommandType.StoredProcedure; 

cmd.Parameters.Add(new SqlParameter("@User", username)); 

    SqlDataReader reader = cmd.ExecuteReader(); // execute the function 

    // return the response from the reader (1 if it is true, 0 for false) 
} 

然後,您可以通過執行調用該函數:

var userExists = UserExists("YourUser"); 

http://www.csharp-station.com/Tutorials/AdoDotNet/Lesson07.aspx

+1

請注意,根據數據庫,設置等情況,這可能區分大小寫,也可能不區分大小寫。 –

1

您可以在將返回DataRows數組的數據表上執行select語句。

DataRow[] foundRows = DataTable.Select("username = andy"); 
if(foundRows.Length > 0) 
{ 
Console.WriteLine("Username exists"); 
} 
相關問題