C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[10]: ADO.NETの処理分岐について


(過去ログ 22 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■9298 / inTopicNo.1)  ADO.NETの処理分岐について
  
□投稿者/ たま (1回)-(2007/10/24(Wed) 13:51:28)

分類:[.NET 全般] 

こんにちわ。

お世話になります!

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

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

ASP.NET2.0のVBで作成しております。


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

Else

'登録がなければエラー画面へ
Response.Redirect("LoginError.aspx")

End If

myDataReader.Close()
mySqlConnection.Close()

End Sub
End Class
引用返信 編集キー/
■9312 / inTopicNo.2)  Re[1]: ADO.NETの処理分岐について
□投稿者/ ひろ (62回)-(2007/10/24(Wed) 15:55:35)
No9298 (たま さん) に返信

まず、「ステップ実行」にて意図した動作になっているかを確かめましょう。
その時、各変数が正常であることも確認してください。
そうすれば、多分悪い箇所がみつかります。

ソースをざっと見したところでは、取得した IPの文字列とデータベースに登録してあるIPアドレスの違いが一番人気です。
あと、sub という項目のTrueという文字列(大文字小文字の問題)とか、その組み合わせが本当にあるのかとか。

取得したIP(文字列)は確認してありますか?
それを元にデータベースに対してSQLを実行してみましたか?(プログラムではなく直接という意味)

#SqlCommand.ExecuteReader の戻り値って Nothing が戻ることがあるのでしょうか?
SELECT 文が正しければ、SqlReader オブジェクトが返ってくると思うのですが…


引用返信 編集キー/
■9325 / inTopicNo.3)  Re[2]: ADO.NETの処理分岐について
□投稿者/ たま (3回)-(2007/10/24(Wed) 17:14:40)
No9312 (ひろ さん) に返信

ありがとうございます!

> まず、「ステップ実行」にて意図した動作になっているかを確かめましょう。

> それを元にデータベースに対してSQLを実行してみましたか?(プログラムではなく直接という意味)

ステップ実行にて行ってみました。
変数ipAdの所を見るとしっかりIPアドレスが取れていました。
データベースのテーブルに登録しても削除してもエラーには行きませんでした。

> ソースをざっと見したところでは、取得した IPの文字列とデータベースに登録してあるIPアドレスの違いが一番人気です。
> あと、sub という項目のTrueという文字列(大文字小文字の問題)とか、その組み合わせが本当にあるのかとか。

データベースのテーブルに登録してなくてもエラーの分岐には行ってくれませんでした。
データベースの登録とsub という項目のTrueという文字列の有無は何度も確認しましたが
間違いありませんでした。。。


> #SqlCommand.ExecuteReader の戻り値って Nothing が戻ることがあるのでしょうか?
> SELECT 文が正しければ、SqlReader オブジェクトが返ってくると思うのですが…

googleで調べるとSqlCommand.ExecuteReader の戻り値はSqlReaderとありました。
するとソースが違っているのでしょうか?

ご教示宜しくお願い致します。
引用返信 編集キー/
■9328 / inTopicNo.4)  Re[3]: ADO.NETの処理分岐について
□投稿者/ まどか (386回)-(2007/10/24(Wed) 17:26:56)
> googleで調べるとSqlCommand.ExecuteReader の戻り値はSqlReaderとありました。

真っ先に調べるべきは、Googleではなく、MSDNです。

http://msdn2.microsoft.com/ja-jp/library/9kcbe65k.aspx
http://msdn2.microsoft.com/ja-jp/library/system.data.sqlclient.sqldatareader_members.aspx

> するとソースが違っているのでしょうか?

戻り値としてNothingがありえる場合は必ず明記されています。
上記を見ればわかりますが、明記されていません。
ということは、必ずSqlDataReaderのインスタンスが返ってきますので、SqlDataReaderのメンバを参照して判断することになります。
引用返信 編集キー/
■9331 / inTopicNo.5)  Re[4]: ADO.NETの処理分岐について
□投稿者/ たま (4回)-(2007/10/24(Wed) 17:59:15)
No9328 (まどか さん) に返信

ありがとうございます☆

> 真っ先に調べるべきは、Googleではなく、MSDNです。
勉強になりました。
今後は1番にMSDNを確認させて頂きます。


> 戻り値としてNothingがありえる場合は必ず明記されています。
> 上記を見ればわかりますが、明記されていません。
> ということは、必ずSqlDataReaderのインスタンスが返ってきますので、SqlDataReaderのメンバを参照して判断することになります。

If Not (myDataReader Is Nothing) Then → If myDataReader.HasRows=False Thenで
処理分岐ができました☆

アドバイス頂きましてありがとうございました!


引用返信 編集キー/
■9332 / inTopicNo.6)  Re[4]: ADO.NETの処理分岐について
□投稿者/ たま (5回)-(2007/10/24(Wed) 18:13:27)
No9328 (みなさま) に返信

このWEBのIFの判定で登録されていない場合はエラーのaspxを用意してあるのですが
登録されている場合は4分割の画面を開きたいのですがフレームセットが使えないので
どの様に作成しようか分からずにとても困っています。

調べるとCSSスタイルシートやJavaScriptが出てきましたが。。。
CSSスタイルシートやJavaScriptも使い方が分かりません。

4分割フォームの詳細は
・ヘッダー部分「Title.aspx」→ 両端に画像が入った題名のみのファイル
・左部分「left.aspx」→  検索ボックスと検索ボタンが4つあり。キーを入力して
  次の検索結果フォームへ異動する。
・右部分「right.aspx」→ left.aspxと全く同じ作りです。
          (東日本と西日本が分かれているようなイメージです。)
・下部 → 署名(フォームではなく文字列)

勉強不足で恐縮なのですがご教示下さいますよう宜しくお願い申し上げます。

引用返信 編集キー/
■9334 / inTopicNo.7)  Re[5]: ADO.NETの処理分岐について
□投稿者/ Mr.T (107回)-(2007/10/24(Wed) 18:51:01)
Mr.Tです、こんにちは。

http://blogs.wankuma.com/mymio/archive/2007/09/18/96716.aspx
のように、マスタページを使うのもひとつの手です。

>CSSスタイルシートやJavaScriptも使い方が分かりません。
どの程度使い方がわからぬといっているのか、わかりませんが...
ほんとーに全くさわったことないし、やったことないのであれば
やってみればよいのでは。

少なくとも分割っぽく見せるだけなら、それほど膨大な知識が必要なわけでは
ありません。

引用返信 編集キー/
■9337 / inTopicNo.8)  Re[6]: ADO.NETの処理分岐について
□投稿者/ たま (6回)-(2007/10/24(Wed) 19:08:43)
No9334 (Mr.T さん) に返信

こんにちわ。ありがとうございます☆

> マスタページを使うのもひとつの手です。

マスターページはvisual web developerのデザインで作った事があるのですが
aspxファイルの挿入の仕方がわかりませんでした。。。

> どの程度使い方がわからぬといっているのか、わかりませんが...

ほんとに全くさわったこともやったことなかったのですが
片方がサブでもう片方がメインというサンプルばかりで見つけれなかったので
断念してしまいました。

> 少なくとも分割っぽく見せるだけなら、それほど膨大な知識が必要なわけでは
> ありません。

疑似フレームというやつですよね?
そうなんですか☆少し頑張ってみます。

CSSの上記の様な4分割のサンプルありましたら教えて下さい。
宜しくお願い致します。
引用返信 編集キー/
■9341 / inTopicNo.9)  Re[7]: ADO.NETの処理分岐について
□投稿者/ たま (7回)-(2007/10/24(Wed) 20:14:04)
> ■No9334 (Mr.T さん) に返信

> マスターページはvisual web developerのデザインで作った事があるのですが
> aspxファイルの挿入の仕方がわかりませんでした。。。

パネルコントロールと間違えていました。
すみません。。。
引用返信 編集キー/
■9384 / inTopicNo.10)  Re[8]: ADO.NETの処理分岐について
□投稿者/ たま (8回)-(2007/10/25(Thu) 14:16:27)
visual web developerのデザインでテーブルを作って
ソリューションエクスプローラからaspxファイルをドラッグ&ドロップで
テーブル内に追加したのですがリンクを貼った状態にしかなりません。。。

どの様にすればHTMLでいうsrc=""って状態になるのでしょうか??

ご教示下さいませ!
引用返信 編集キー/
■9386 / inTopicNo.11)  Re[9]: ADO.NETの処理分岐について
□投稿者/ ぼのぼの (113回)-(2007/10/25(Thu) 14:46:04)
No9384 (たま さん) に返信
1つのページの中に複数のaspxを、フレームを使わないでってのは無理です。
Webユーザコントロールについて調べてみると良いでしょう。
それより、タイトルと内容が乖離してるので別スレにした方が良くないですか?
引用返信 編集キー/
■9403 / inTopicNo.12)  Re[10]: ADO.NETの処理分岐について
□投稿者/ たま (9回)-(2007/10/25(Thu) 18:42:23)
No9386 (ぼのぼの さん) に返信

ありがとうございます☆
調べてみます!

> それより、タイトルと内容が乖離してるので別スレにした方が良くないですか?
おっしゃるとおりです。
申し訳ありません。

タイトルの問題は解決しましたので一旦解決済みに致します。
再投稿の際は宜しくお願い致します。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -