- - PR -
ACCESS&ASP.NETログイン認証。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-02 20:08
今日は
もし、データにnullを許可しているのなら、DR[1].ToString()・DR[2].ToString()の前にNullを除外する必要があります。 例えば、isDBNull等により。 又は、データベースにNullを許可しないにするとかの考慮が必要かと思います。 | ||||||||
|
投稿日時: 2003-12-03 04:28
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(); dr.Read(); if (dr.IsDBNull(37)) { Label1.Visible=true; } else { Label2.Visible=true; } dr.Close(); SelCmd.Connection.Close(); いろいろと調べて、上記のようなプログラムをしたら、1行目の SelCmd.Parameters.Add("会員ID");の段階で、 OleDbParameterCollection は、String オブジェクトではなく、non-null OleDbParameter 型オブジェクトのみ受け入れます。 というエラーが出てきます。データベースの方ではnull値は入力できない形になっています。 ヘルプを見ると myDataAdapter.SelectCommand.Parameters.Add("@SerialNum", OleDbType.Integer).Value = 239;という記述ができているのに、私のものだと、.Valueというのが出てきません。その段階で間違いであることはわかるのですが…。 どうかお力をお貸しください。 | ||||||||
|
投稿日時: 2003-12-03 08:43
パラメータの型を決めるのに型がわからなくては……たとえばテキスト型として、
| ||||||||
|
投稿日時: 2003-12-03 09:36
上記書き込みありがとうございます!
やってみたところ、OleDbDataReader dr=SelCmd.ExecuteReader();の部分で、 パラメータ ?_2 にはデフォルト値はありません。 というエラーが出ます…。 デフォルト値は指定しなくてもよいのでは? 申し訳ありませんが、ヒントをいただけないでしょうか? よろしくお願いいたします。 | ||||||||
|
投稿日時: 2003-12-03 10:27
こんにちは
Loginテーブルからデータを取得する際 どのようなSELECT文を発行しているのですか? | ||||||||
|
投稿日時: 2003-12-03 12:42
もう一度、Select文を入力しなおしたところ完結いたしました。
見えないところで空欄や、半角、全角が間違っていたのかもしれません。 そして最後の質問なのですが、(dr.IsDBNull(Ordinal))のOrdinalの部分には列の順序番号が入るようなのですが、よくわかりません。 列の順序番号とはどういったものなのでしょうか…。 パスワードとIDが適合したときは正しく処理が行われるのですが、適合しなかった場合、行および列にデータが存在しません。 というエラーが出ます。 恐らくこのカッコ内のものが引っかかってるだと思います。 何回も質問して申し訳ありませんが、教えていただけないでしょうか? よろしくお願いいたします。 | ||||||||
|
投稿日時: 2003-12-03 13:54
今日は
dr.IsDBNull(Ordinal)のOridinalは項目の順番に付けられた番号でIntegerだったと思います。 又、dr.GetOrdinal("項目名")でもそのOridinalと同じ順序番号Integerを返してくれます。 よってdr.IsDBNull(dr.GetOrdinal("項目名"))でも同じ様に動作します。 | ||||||||
|
投稿日時: 2003-12-03 17:06
rvmx様、返信ありがとうございます。
私の場合、 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(); dr.Read(); if (dr.IsDBNull(*) という形で、Parameterに会員IDとパスワードを与え、そのSELECT文をExecuteReader();という形で一行ずつ読み込んでいくという形をとっているのですが、 dr.IsDBNullの部分では、dr.GetOrdinal("項目名")という項目名のところに、2つ(会員IDとパスワード)指定しないといけないという捉え方でよろしいのですよね? |