重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

クライアントから取得したIPアドレスとDBの登録が一致した場合のみフォームを
出力するアプリケーションを作成しているのですがDBの登録があってもエラーのフォームの
分岐に行ってしまいます。

どこが違うのでしょうか?教えて下さい。
ASP.NETを勉強し始めて間もないのでまだまだ勉強不足ですが宜しくお願い致します。


Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.VisualBasic
Imports System.Text
Partial Class INDEX
Inherits System.Web.UI.Page
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load

'------------- IPアドレス取得 --------------
Dim ipAddr As String

ipAd = Request.UserHostAddress

'------------- SQL Server Connection --------------

Dim myDataReader As SqlDataReader
Dim mySqlConnection As SqlConnection
Dim mySqlCommand As SqlCommand

mySqlConnection = New SqlConnection("Server=Name;database=Source;UID=id;PWD=pw")
mySqlCommand = New SqlCommand("SELECT * FROM IPdb WHERE IPAddress='" & ipAd & "' AND sub='True'")

mySqlConnection.Open()
mySqlCommand.Connection = mySqlConnection
myDataReader = mySqlCommand.ExecuteReader(CommandBehavior.CloseConnection)

Do While (myDataReader.Read())

Loop

If Not (myDataReader Is Nothing) Then

Response.Redirect("LoginError.aspx")

Else
End If

myDataReader.Close()
mySqlConnection.Close()

End Sub
End Class

A 回答 (1件)

ExecuteReaderでDataReaderを取得するならHasRowsプロパティで判断するのではないでしょうか



ExecureReaderはWhere句で選択した行セットが無い場合
行セットを持たない DataReaderオブジェクトを返すと思います

ですから
if Not ( myDataReader is Nothing ) then
ですと( myDataReader is Nothing ) はFalseになり
Not ( False )は True になりますから
結果として LoginError.aspxに遷移してしまうと思います

この回答への補足

ありがとうございます!

返事が遅くなりまして申し訳ございません。
条件判定が反対だったんですね。。。

色々試してみたのですがデータベースに登録がないものでもメインが開いてしまいます。
(もちろん、登録されているものはメインが表示されます。)

本来は登録がなければLoginError.aspxに移行しなければいけないのですが・・・

コードでおかしい部分はありますでしょうか?
ご教示下さいませ。

補足日時:2007/10/22 09:15
    • good
    • 0
この回答へのお礼

もう1度勉強してがんばってみます☆

ご教示ありがとうございました♪

お礼日時:2007/10/24 13:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!