質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • C#

    6871questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • SQL Server

    572questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • Visual Studio 2012

    90questions

    Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

テキストボックスに入力したキー情報を元にレコードを表示させたい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 310

hinatti

score 6

前提・実現したいこと

テキストボックスに入力したキー情報を元にdataGridViewに該当するレコードを表示させたい

発生している問題・エラーメッセージ

テーブルにあるキーを入力してもelseの方に行ってしまう

該当のソースコード

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Printing;

namespace ProductDisplay
{
    public partial class FormProductDisplay : Form
    {
        /// <summary>
        /// SQLserver接続変数
        /// </summary>
        private SqlConnection connection;

        /// <summary>
        /// ページカウント変数
        /// </summary>
        private int page = 1;

        /// <summary>
        /// 印刷する最大ページ数
        /// </summary>
        private const int MAX_PAGE = 200;

        /// <summary>
        /// ProductDisplayフォームのコンストラクタ
        /// </summary>
        public FormProductDisplay()
        {
            InitializeComponent();
        }

        /// <summary>
        /// FormProductDisplayのイベントハンドラ
        /// DBに接続してseihin.txtをINSERTする
        /// </summary>
        /// <param name="sender">使用しない</param>
        /// <param name="e">使用しない</param>
        private void FormProductDisplay_Load(object sender, EventArgs e)
        {
            string sqlDelete = @"DELETE FROM product_table";
            using (connection = new SqlConnection(Properties.Settings.Default.ConnectionString))
            {
                SqlCommand cmd = new SqlCommand(sqlDelete, connection);
                connection.Open();
                cmd.ExecuteNonQuery();
            }

            try
            {
                using (connection = new SqlConnection(Properties.Settings.Default.ConnectionString))
                {
                    string sql = @"
                        INSERT INTO product_table (
                            product_id,
                            basic_order_lot,
                            product_code,
                            chassis_number,
                            assembled_ymd,
                            assembled_hms,
                            struct_number,
                            yyyymm
                        )
                        VALUES (
                            @product_id,
                            @basic_order_lot,
                            @product_code,
                            @chassis_number,
                            @assembled_ymd,
                            @assembled_hms,
                            @struct_number,
                            @yyyymm
                        );
                        ";

                    connection.Open();
                    SqlCommand command = new SqlCommand(sql, connection);
                    try
                    {
                        command.Parameters.Add(new SqlParameter("@product_id", connection));
                        command.Parameters.Add(new SqlParameter("@basic_order_lot", connection));
                        command.Parameters.Add(new SqlParameter("@product_code", connection));
                        command.Parameters.Add(new SqlParameter("@chassis_number", connection));
                        command.Parameters.Add(new SqlParameter("@assembled_ymd", connection));
                        command.Parameters.Add(new SqlParameter("@assembled_hms", connection));
                        command.Parameters.Add(new SqlParameter("@struct_number", connection));
                        command.Parameters.Add(new SqlParameter("@yyyymm", connection));

                        StreamReader read = new StreamReader("seihin.txt");
                        try
                        {
                            string line;
                            while ((line = read.ReadLine()) != null)
                            {
                                command.Parameters["@product_id"].Value = line.Substring(0, 11);
                                command.Parameters["@basic_order_lot"].Value = line.Substring(11, 8);
                                command.Parameters["@product_code"].Value = line.Substring(19, 6);
                                command.Parameters["@chassis_number"].Value = line.Substring(25, 4);
                                command.Parameters["@assembled_ymd"].Value = line.Substring(29, 8);
                                command.Parameters["@assembled_hms"].Value = line.Substring(37, 11);
                                command.Parameters["@struct_number"].Value = line.Substring(48, 7);
                                command.Parameters["@yyyymm"].Value = line.Substring(55, 6);
                                command.ExecuteNonQuery();
                            }
                            read.Close();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("ファイルの読み込みに失敗しました。", "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            System.Diagnostics.Debug.WriteLine(ex.ToString());
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("ファイルを開くのに失敗しました。", "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        System.Diagnostics.Debug.WriteLine(ex.ToString());
                    }
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("データベースに接続出来ませんでした。", "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                System.Diagnostics.Debug.WriteLine(ex.ToString());
            }
        }

        /// <summary>
        /// 検索ボタンのイベントハンドラ
        /// 製品IDを元に検索してdataGridViewに表示する
        /// </summary>
        /// <param name="sender">使用しない</param>
        /// <param name="e">使用しない</param>
        private void buttonSelect_Click(object sender, EventArgs e)
        {
            using (connection = new SqlConnection(Properties.Settings.Default.ConnectionString))
            {
                try
                {
                    connection.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show("データベースを開くのに失敗しました。", "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    System.Diagnostics.Debug.WriteLine(ex.ToString());
                }

                string sql = @"SELECT * FROM product_table WHERE product_id = @product_id;";
                SqlCommand command = new SqlCommand(sql, connection);
                command.Parameters.AddWithValue("@product_id", textBoxProductID.Text);
                using (SqlDataReader reader = command.ExecuteReader())
                {
                    reader.Read();
                    if (textBoxProductID.Text == reader["product_id"].ToString())
                    {
                        dataGridViewProduct.Rows.Add(reader["product_id"], reader["basic_order_lot"], reader["product_code"],
                                                        reader["chassis_number"], reader["assembled_ymd"], reader["assembled_hms"],
                                                        reader["struct_number"], reader["yyyymm"]);
                    }
                    else
                    {
                        MessageBox.Show("一致する製品IDが見つかりませんでした。", "information", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                    reader.Close();
                }
                connection.Close();
            }
        }

試したこと

GetValueなど色々試してみたのですがブレークポイントを作って値を見てみたところ何も取得できていなかったです。
SQLManagementstudioで見たところテーブルにINSERTは出来ていました

補足情報(言語/FW/ツール等のバージョンなど)

5819718 2A11H185 2ZJHBD 5795 2000-07-26 08:31:16 8H31040 200008
が順にproduct_id,basic_order_lot,product_code,chassis_number,assembled_ymd,assembled_hms,struct_number,yyyymmです

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

string id = reader["product_id"].ToString();としてあげて変数idと比較したらちゃんと動作しましたー
dataGridViewの表示は
dataGridViewProduct[0, 0].Value = reader["product_id"].ToString();
dataGridViewProduct[1, 0].Value = reader["basic_order_lot"].ToString();
dataGridViewProduct[2, 0].Value = reader["product_code"].ToString();
dataGridViewProduct[3, 0].Value = reader["chassis_number"].ToString();
dataGridViewProduct[4, 0].Value = reader["assembled_ymd"].ToString();
dataGridViewProduct[5, 0].Value = reader["assembled_hms"].ToString();
dataGridViewProduct[6, 0].Value = reader["struct_number"].ToString();
dataGridViewProduct[7, 0].Value = reader["yyyymm"].ToString();
と記述してあげたら出来ました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C#

    6871questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • SQL Server

    572questions

    SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

  • Visual Studio 2012

    90questions

    Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです