- 題名: C#のプログラムの質問
- 日時: 2003/08/27 13:26:47
- ID: 469
- この記事の返信元:
- (なし)
- この記事への返信:
- [508] Re[1]: C#のプログラムの質問2003/08/29 16:05:47
- ツリーを表示
■No469に返信(AKATSUKIさんの記事)
> 『レコードを抽出してユーザIDとパスワードのレコード
> が一致したならMessageBoxに[OK]を表示』というやり方でやりたいんですが・・・。
.ToString()で比較しているのは絶対変。
DataViewを2つ使いまわしているのも複雑にしているだけ。
(同じパスワードの人がいたら正しく認証できないなどバグの温床)
dataView1.RowFilter = "ユーザID='" + textBox1.Text
+ "' and パスワード='" + textBox2.Text + "'";
if (dataView1.Count == 1)
{
MessageBox.Show("OK");
}
で、どうでしょうか?
ただ、、、
ユーザチェックするのに、DataAdapter,DataSet,DataView
を総動員するのも、何か大層過ぎる印象を受けます。
Connectionだけで、以下のようにコーディングすることも出来ます。
private bool IsCertificatedUser(string userID, string pass) {
string sql = "select count(*) from T_パスワード"
+ " where ユーザID ='%USERID%' and パスワード = '%PASS%'";
sql = sql.Replace("%USERID%", userID);
sql = sql.Replace("%PASS%", pass);
OleDbCommand cmd = m_oleDbConnection.CreateCommand();
cmd.CommandText = sql;
return ((int)cmd.ExecuteScalar() == 1);
}
・データ Access2000
ユーザID | パスワード
---------------------
1000 | 0001
1001 | 0002
1002 | 0002
1003 | 0004
・入力したユーザIDとパスワードが一致したならMessageBoxに[OK]を表示
それ以外は[入力が違います]を表示するにはどうしたらいいのでしょうか?
textBox1にユーザID
textBox2にパスワードを入力するようにしてあります。
『レコードを抽出してユーザIDとパスワードのレコード
が一致したならMessageBoxに[OK]を表示』というやり方でやりたいんですが・・・。
自分で↓のように作ってみたんですがうまくいかなくて・・。
誰か教えてくれませんか?
=========ソース==========================================================
//実行ボタン
private void button1_Click(object sender, System.EventArgs e)
{
//レコードを抽出
dataView1.RowFilter = "ユーザID='" + textBox1.Text + "'";
dataView2.RowFilter = "パスワード='" + textBox2.Text + "'";
if(textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("入力が違います1");
}
else
{
if(dataView1.ToString() == dataView2.ToString() )
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("入力が違います2");
}
}
}
private void Form1_Load(object sender, System.EventArgs e)
{
odaPas.Fill(pasSet1,"T_パスワード"); //データを読み込む
}
====================================================================