none
ADO.NETによるデータベースプログラム作成にて RRS feed

  • 質問

  • ""初心者です。

    △環境

    Windows7

    Visual Studio Community 2017(3) Version 15.9.9

    △問題

    ・本を見ながら、「データベースアプリ」を作成しました。

    ・プログラムを実行して「テーブルの全データを表示」してみましたが、表示されません。

    ・エラー「ハンドルされていない例外」と、出ました。(資料画像1、添付)

    △問題解決の試み

    ・エラーを理解するため、色々検索しましたが、益々分からなくなりました。

    ・本から提供されているサンプルのコード比較等を試みましたが、異常はありません。(WinMergeを活用)

    △作成過程

    1、データベースを作成。

    1)プロジェクトメニューの新しい項目の追加を選択。

    2)データカテゴリを選択し、サービスベースのデータベースを選択して追加ボタンをクリック。

    2、テーブルを作成。

    1)テーブルの作成は、VSのテーブルデザイナーを使って行う。

    2)詳細、割愛

    3、データの登録を行う。

    ~詳細、割愛

    4、データーベースアプリを作成する。(接続型データアクセスを使用)

    1)接続文字列の作成(テスト接続成功)

    ~詳細、割愛

    5、操作画面の作成とイベントハンドラーの作成を行う。

    1)操作画面の作成を行う。

    ~割愛

    2)テーブルデータを表示するイベントハンドラーの作成を行う。(以下に作成したコードをコピー)

    WinMergeを活用して、コード比較するが、一致。異常なし。

    using System;

    using System.Data;

    using System.Windows.Forms;

    using System.Data.SqlClient;

    namespace DataProviderApp01

    {

        public partial class Form1 : Form

        {

            private SqlConnection cn = new SqlConnection();

            private SqlCommand cmd = new SqlCommand();

            private SqlDataReader rd;

            private string cnstr =

                @"Data Source=(LocalDB)\MSSQLLocalDB;" +

                @"AttachDbFilename=|DataDirectory|\Database1.mdf;" +

                "Integrated Security=True;" +

                "Connect Timeout=30";

            public Form1()

            {

                InitializeComponent();

            }

            private void button1_Click(object sender, EventArgs e)

            {

                cn.ConnectionString = cnstr;

                cn.Open();

                cmd.Connection = cn;

                cmd.CommandType = CommandType.Text;

                cmd.CommandText = "SERLCT * FROM [dbo].[Table]";

                rd = cmd.ExecuteReader();

                while (rd.Read())

                    listBox1.Items.Add(

                        String.Format("[{0}] {1,-10} {2,-10} {3,-30}Tel{4}",

                        rd["Id"], rd["Name"], rd["ZipCode"],

                        rd["Address"], rd["Tel"]));

                rd.Close();

                cn.Close();                     

             }

            private void Form1_Load(object sender, EventArgs e)

            {

            }

        }

    }

    6、プログラムを実行。

    ・プログラムを実行して「テーブルの全データを表示」してみましたが、表示されません。

    ・エラー「ハンドルされていない例外」と、出ました。(資料画像1、添付)

    7、お願い

    ~サンプルのプログラムと同じく作成したのに・・・。

    ~今の私には、手に負えません。

    ~ご助言、宜しくお願いします。



    • 編集済み genkidesu2018 2019年5月12日 6:31 関係ない画像が含まれている。
    2019年4月1日 7:26

回答

  • 先の私のレスの、

    SQL Server の Table テーブルの中の列名と rd["Address"] の Address に不一致があるからのような気がします。

    という点については確認していただけましたか?

    > System.IndexOutOfRangeException: Address

    IndexOutOfRangeException というのは「指定した名前の列が見つかりません」ということ、即ち rd["Address"] の Address がデータベースのテーブルの列に見つからないということなので、上の想像は合っていると思いますよ。

    もし、私が言ってることが分からないということであれば、分からないままにしておかないで、質問してください。

    2019年4月2日 7:07

すべての返信

  • SELECT のスペルが間違ってます。
    2019年4月1日 7:36
  • ご指摘、有難うございます。

    2019年4月1日 8:32
  • 修正したらどういう結果になったか書いてください。
    2019年4月1日 9:09
  • すみません。

    修正した結果は、変わり無しです。

    2019年4月1日 10:49
  • エラーメッセージは変わったと思うのですが、それを書いてください。

    話が通じないと、ここのような掲示板で解決するのは難しいです。近くに聞ける人がいれば、聞いてみることをお勧めします。そういう人がいなければ、学校に通って講師に聞くとかすることを考えてみてはいかがでしょう。

    2019年4月1日 11:10
  • 修正した後のエラーメッセージは、同じです。
    2019年4月1日 13:03
  • > 修正した後のエラーメッセージは、同じです。

    どこを修正したのですか? 修正するのは、

    > cmd.CommandText = "SERLCT * FROM [dbo].[Table]";

    の SERLCT を SELECT に直すのですよ。そこを直しても Incorrect syntax near '*' というのは変わりませんか?

    • 編集済み SurferOnWww 2019年4月1日 14:09 画像追加
    2019年4月1日 13:20
  • 真にすみません。

    よくよく見ましたら、変わっていました。

    資料画像2修正を送ります。

    本当にすみません。

    2019年4月2日 2:23
  • [詳細(D)]ボタンをクリックするとエラーの詳細が表示されませんか? それを書いてください。

    画像に含まれる Address という文字列からの想像ですが、今度は、

    String.Format("[{0}] {1,-10} {2,-10} {3,-30}【Tel】{4}",
                        rd["Id"], rd["Name"], rd["ZipCode"],
                        rd["Address"], rd["Tel"]));

    の行でエラーが出ていて、SQL Server の Table テーブルの中の列名と rd["Address"] の Address に不一致があるからのような気がします。

    2019年4月2日 3:24
  • 何回もすみません。

    ”詳細(D)”を送れないので、以下にコピーします。

    Just-In-Time (JIT) デバッグを呼び出すための詳細については、
    ダイアログ ボックスではなく、このメッセージの最後を参照してください。

    ************** 例外テキスト **************
    System.IndexOutOfRangeException: Address
       場所 System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String fieldName)
       場所 System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
       場所 System.Data.SqlClient.SqlDataReader.get_Item(String name)
       場所 DataProviderApp01.Form1.button1_Click(Object sender, EventArgs e) 場所 C:\Users\genki\source\repos\DataProviderApp01\DataProviderApp01\Form1.cs:行 35
       場所 System.Windows.Forms.Control.OnClick(EventArgs e)
       場所 System.Windows.Forms.Button.OnClick(EventArgs e)
       場所 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       場所 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       場所 System.Windows.Forms.Control.WndProc(Message& m)
       場所 System.Windows.Forms.ButtonBase.WndProc(Message& m)
       場所 System.Windows.Forms.Button.WndProc(Message& m)
       場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** 読み込まれたアセンブリ **************
    mscorlib
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3324.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
    ----------------------------------------
    DataProviderApp01
        アセンブリ バージョン:1.0.0.0
        Win32 バージョン:1.0.0.0
        コードベース:file:///C:/Users/genki/source/repos/DataProviderApp01/DataProviderApp01/bin/Debug/DataProviderApp01.exe
    ----------------------------------------
    System.Windows.Forms
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3324.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3353.0 built by: NET472REL1LAST_B
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3221.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Data
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3260.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
    ----------------------------------------
    System.Core
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3324.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
    ----------------------------------------
    System.Configuration
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3324.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Data.resources
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3062.0 built by: NET472REL1
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.resources/v4.0_4.0.0.0_ja_b77a5c561934e089/System.Data.resources.dll
    ----------------------------------------
    System.Xml
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3221.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Transactions
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3221.0 built by: NET472REL1LAST_C
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
    ----------------------------------------
    System.EnterpriseServices
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3062.0 built by: NET472REL1
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
    ----------------------------------------
    System.Runtime.Caching
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3221.0
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Caching/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Runtime.Caching.dll
    ----------------------------------------
    System.Windows.Forms.resources
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3062.0 built by: NET472REL1
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ja_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    mscorlib.resources
        アセンブリ バージョン:4.0.0.0
        Win32 バージョン:4.7.3062.0 built by: NET472REL1
        コードベース:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ja_b77a5c561934e089/mscorlib.resources.dll
    ----------------------------------------

    ************** JIT デバッグ **************
    Just-In-Time (JIT) デバッグを有効にするには、このアプリケーション、
    またはコンピューター (machine.config) の構成ファイルの jitDebugging 
    値を system.windows.forms セクションで設定しなければなりません。
    アプリケーションはまた、デバッグを有効にしてコンパイルされなければ
    なりません。

    例:

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>

    JIT デバッグが有効なときは、このダイアログ ボックスで処理するよりも、
    ハンドルされていない例外はすべてコンピューターに登録された
    JIT デバッガーに設定されなければなりません。

    以上です。

    宜しくお願いします。

    2019年4月2日 6:00
  • 先の私のレスの、

    SQL Server の Table テーブルの中の列名と rd["Address"] の Address に不一致があるからのような気がします。

    という点については確認していただけましたか?

    > System.IndexOutOfRangeException: Address

    IndexOutOfRangeException というのは「指定した名前の列が見つかりません」ということ、即ち rd["Address"] の Address がデータベースのテーブルの列に見つからないということなので、上の想像は合っていると思いますよ。

    もし、私が言ってることが分からないということであれば、分からないままにしておかないで、質問してください。

    2019年4月2日 7:07
  • 解決しました。

    本当に有難うございます。

    御指摘の通り、データベースのテーブルを見ました所、「Adress」になっていました。

    「d」が、欠落しておりました。

    修正後、実行するクイック中々出来ませんでした。怖くて・・・。

    表示された瞬間、本当に感激しました。

    貴重な時間を割いて頂きまして、感謝の一言に尽きます。

    今回のサポート体験を、確り総括したいと思います。

    今後も、ご助言と叱責宜しくお願いします。

    で、一つお詫びをしなければなりません。

    本件サポート中にて、”マルチポスト行為”を犯しました。

    ご指摘を受けて、直ぐ検索をしました。(意味を調べました)

    恥ずかしくなりました。

    その後、即削除しました。

    知らなかった事ではありますが、真に申し訳ないです。

    お許しください。

    2019年4月2日 11:11
  • 最初の質問とは違うことをしていて、違う問題が出ているようですが、であれば、新たに別のスレッドを立てて質問するようにして下さい。一つのスレッドでは一つの質問が原則です。


    なお、別のスレッドで質問するにしても、上の質問内容では全くの情報不足であると認識してください。具体性がなくて何もわかりません。

    質問を書く前に、まず、今のコードをどんどん削っていって、問題を再現できる必要最低限のところまで絞ってください。

    画像を見ると Kingsoft なんちゃらというのが出てますが、そういうサードパーティ製の何かを使っているとすると、ここの回答者・閲覧者にはお手上げです。それも削ってください。

    どんどん削っていく段階で原因が分かって自己解決できることが多いです。自己解決できなくでも、そのコードをアップしてもらえれば(とは言っても、長いコードをベタっと貼るのは NG ですよ)、回答者の方でも問題を再現できて何らかのアドバイスが出せるかもしれません。
    2019年5月10日 9:17
  • ご指摘、有難うございます。

    早速この返信後削除し、新にスレッドを立てて質問したいと思います。(後日)

    で、返信頂いた内容の中で、

    今のコードをどんどん削っていって、問題を再現できる必要最低限のところまで絞ってください。」

    どんどん削っていく段階で原因が分かって自己解決できることが多いです。」と、ありますが、

    自身の読解力不足で意味が分かりません。

    出来ましたら、何かの例を提示して教えて頂くと幸いです。

    お手数をおかけしますが、宜しくお願いします。

    2019年5月11日 11:00
  • > 「今のコードをどんどん削っていって、問題を再現できる必要最低限のところまで絞ってください。」
    > 「どんどん削っていく段階で原因が分かって自己解決できることが多いです。」と、ありますが、
    > 自身の読解力不足で意味が分かりません。

    読んで字のごとくで、それが分からないと言われては・・・ しかも、質問を削除してしまっていますよね。そんなので具体的なことが言える訳はないじゃないですか。

    よく考えてみてください。例外が発生しているところは分かるはずです。そこ以外に関係のなさそうな部分を削っていくのです。ここまで言って分からなければ自分はお手上げです。

    前にも言いましたが、近くに聞ける人がいれば、聞いてみることをお勧めします。そういう人がいなければ、学校に通って講師に聞くとかすることを考えてみてはいかがでしょう。


    2019年5月11日 12:02
  • 返信、有難うございます。

    御助言、参考にします。

    2019年5月11日 14:49