0

こんにちは。今はC#でプログラミングし、ユーザーが自分のアカウントにサインアップしています。私はすでにSQLに値を挿入しましたが、値が存在するかどうかを確認したいですか?テーブルの詳細:

Username              Password
Peter                 abc  
Hannah                abd 
John                  bdf 

ユーザー名を主キーとして設定し、trycatcherrorを使用してそれを検出する簡単な方法をお勧めします。しかし、私は自分のユーザー名が存在することを見つけるための特定の方法を見つけたいと思っています。Tks

4

4 に答える 4

3

挿入を試みる前に値が存在するかどうかを確認したい場合は、次のような SQL ステートメントを記述できます。

if not exists (select 1 from table where username=@username)
begin
     insert into ...
end
else
begin
    RAISERROR ('User already exists. Pick another one.', -- Message text.
           16, -- Severity.
           1 -- State.
           );
end

ユーザー名が既に存在するために挿入が成功しない場合はException、クライアント側でメッセージを出力するだけです。

try
{
    //do the insert
}
catch(Exception ex)
{ 
   //Output ex.Message, it will say: User already exists. Pick another one.
}

IMO のより良いアプローチは、ユーザー名に一意のインデックスを作成し、一意の制約違反のために失敗させることです。例外をキャッチして、わかりやすいメッセージを表示するだけです。

于 2012-08-31T16:37:28.623 に答える
2

ユーザー名を主キーにしたくありません。ただし、一意のインデックスにする必要があります。

いずれにせよ、それは非常に簡単です:

SELECT COUNT(*) from UserTable where Username = 'Peter'

... ユーザー名が存在する場合は 1 (またはそれ以上) を返し、存在しない場合は 0 を返します。

于 2012-08-31T16:37:50.697 に答える
0
SELECT TOP 1 Username FROM mytable WHERE Username='Peter'

次に、コードを使用して、返された行があるかどうかを判断できます。

このアプローチをログインに使用できます。ただし、新しいユーザーをサインアップする場合、確認してから新しいレコードを挿入するまでの間に誰もユーザー名を取得しないという保証はありません。したがって、いずれにせよ、try ... catch は避けられません。

于 2012-08-31T16:36:37.813 に答える
-1

使用できます

 `IF Exists(Select Top 1 * from Users where username = @userNameYouWantToCheck)
  Begin
... Do what you want to do if it exists...   
  END

 ELSE      
 BEGIN     
   ...catch error here...     
 END

`

于 2012-08-31T16:40:35.143 に答える