投稿者 魔界の仮面弁士  (社会人) 投稿日時 2014/6/12 23:13:21
> コードは上から下に流れるのが基本ですが、
> 何故、SQLを実行する前に IF RESULTが先に実行されるのでしょうか?
そのタイミングでは「SQL文を作成」しただけです。SQLの「実行」はされていません。

作成した SQL 文を SqlCommand に渡し、それを ExecuteScalar することによって、
ようやく「SQL が実行」されることになります。


> 魔界の仮面弁士さんが指摘するまで、SQL実行後にIF RESULTが実行されると思ってました。
少なくとも、RESULT に値をセットしているのは
>> RESULT = Convert.ToInt32(CMD.ExecuteScalar())
の行なのですから、If RESULT はそれよりも下に置く必要があります。

それより前の行では RESULT の値は変化しないため、そもそも判定文自体が不要です。


> 教えた頂いた際に提示した設定は「ユーザーIDとかユーザー名を抜き出す必要は無いから、
> 単純にユーザーIDとパスワードが合致した場合だけログインする」という内容で、
> RESULTをInteger型に設定しています。

たとえば、「まだログインしていないのか、それともログイン済みなのか」を管理するのなら、
True / False の二値で良いので、Boolean 型で十分です。

もしも Integer 型にするのであれば、それぞれの値にどのような意味を持たせるのかが
重要です。仮に「0 だったら未ログイン」という意味にするのなら、0 以外はどういう意味なのか。
それが「1」の場合と「2」の場合とで意味が異なるのかどうかを考えておきましょう。

いずれにせよ、その後の実装では、2014/6/10 17:21:40 でご自身が書かれていたように、
『ユーザー名(山田太郎などの日本人の名前)を値を入力したいと思っていますのでstring型でセットしたい』
ということで、String 型にされるのですよね。であればこの場合、その変数が空であれば
ユーザー名がセットされていない状態…すなわち未ログインの状態ということですね。