- - PR -
ACCESS&ASP.NETログイン認証。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-03 17:30
は文字通り適合するデータがなく行が取得できなかったので dr.HasRows とかで件数をチェックする必要があると思います。 IsDBNullは該当する行がある時にその項目がNullかどうかを判断するために使います。 [ メッセージ編集済み 編集者: NYRL 編集日時 2003-12-03 17:31 ] [ メッセージ編集済み 編集者: NYRL 編集日時 2003-12-03 17:32 ] | ||||||||
|
投稿日時: 2003-12-03 17:31
SelCmd.Parameters.Add("会員ID");
SelCmd.Parameters.Add("パスワード"); SelCmd.Parameters["会員ID"].Value=Text1.Text; SelCmd.Parameters["パスワード"].Value=Text2.Text; SelCmd.Connection.Open(); OleDbDataReader dr=SelCmd.ExecuteReader(); if (dr.Read()) { // データがあった } else { // データがなかった } 〜〜〜〜〜〜〜〜〜〜〜〜〜 では?『会員ID』と『パスワード』が一致する行が2つ以上あるはずないですよね?
| ||||||||
|
投稿日時: 2003-12-03 17:31
ん〜と……パラメータ指定した項目を両方ともIsDBNull……変だ……。 それでは敢えて、逆に質問しますけど、
としている目的って、一体何ですか? また、なぜこの2つの項目をIsDBNullで調べたいのですか? [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-12-03 17:44 ] | ||||||||
|
投稿日時: 2003-12-03 17:33
今日は
そうです。 dr.GetOrdinal("会員ID") dr.GetOrdinal("パスワード") となります。 又は、 DR[1].ToString()やDR[2].ToString()の 1や2を直接使っても出来ます。 | ||||||||
|
投稿日時: 2003-12-03 21:45
あ!!なるほど。皆様にご意見をいただきやっとわかった気がします。
Jitta様のご意見、『会員ID』と『パスワード』が一致する行が2つ以上あるはずないですよね? というのはまさにその通り。 ぢゃん♪様がおっしゃるようにこのプログラムがおかしいと感じるのも当然ですね。 rvmx様、答えにくい質問に親身に答えていただきまことにありがとうございます。 おかげさまでとても勉強させていただきました。 今回は、Jitta様の SelCmd.Parameters.Add("会員ID"); SelCmd.Parameters.Add("パスワード"); SelCmd.Parameters["会員ID"].Value=Text1.Text; SelCmd.Parameters["パスワード"].Value=Text2.Text; SelCmd.Connection.Open(); OleDbDataReader dr=SelCmd.ExecuteReader(); if (dr.Read()) { // データがあった } else { // データがなかった } というものを使用して完成しました。 今回返信をいただいた方に感謝いたします。 本当にありがとうございました。 これからもどうぞよろしくお願いいたします。 | ||||||||
|
投稿日時: 2003-12-03 22:27
すみません、同じ問題に悩むほかの方々のために、差し支えなければSQL文をアップしていただけないでしょうか。何人かの方が、それがないために混乱されているようです。だいたい予想はつきますが。近ければレス不要。
SelCmd.CommandText = "SELECT * FROM 会員名簿マスタ WHERE 会員ID = ? AND パスワード = ?"; SelCmd.Parameters.Add("会員ID"); SelCmd.Parameters.Add("パスワード"); SelCmd.Parameters["会員ID"].Value=Text1.Text; SelCmd.Parameters["パスワード"].Value=Text2.Text; SelCmd.Connection.Open(); OleDbDataReader dr=SelCmd.ExecuteReader(); if (dr.Read()) { // データがあった=認証成功 } else { // データがなかった=認証失敗 } それから、配列は0から始まります。1からではありません。要素が2個あれば、使用できるのは0と1で、1と2ではありません。ちょっと気になったので。 #前人未到の1000こ目の投稿 | ||||||||
|
投稿日時: 2003-12-04 02:50
SQLまさにその通りです。
ありがとうございます。 配列の件、失礼しました・・・。 | ||||||||
|
投稿日時: 2003-12-07 23:04
da_login.SelectCommand.Parameters["会員ID"].Value=txt_id.Text;
da_login.Fill(ds_login); string loginpass = ds_login.Tables["会員名簿マスタ"].Rows[0]["パスワード"]; if(txt_pwd.Text == loginpass) { ibtn_to_kaihi.Visible=true; ibtn_pwd.Visible=true; ibtn_m_info.Visible=true; ibtn_retreat.Visible=true; } という形で認証を行っているのですが、login.Tables["会員名簿マスタ"].Rows[0]["パスワード"];のところで、型 'object' を型 'string' に暗黙的に変換できません。というエラーが出ます。対策のヒントお教えていただけないでしょか? よろしくお願いいたします。 |