C#初心者です。
SQLのSELECTコマンドを使い、データベースに接続してGridViewにデータを表示させようとしています。
ユーザーがドロップダウンリストの選択やテキストボックスの入力文字列入力して検索ボタンを押すと、GridViewにデータが表示される仕組みです。
しかし、デバッグを行ったところ、HasRowsがfalseになってしまい接続が閉じてしまいます。
また、GridViewもデータバインドは行っておりますが表示されません。
SqlDataReader sdr = com.ExecuteReader();の行では、選択項目は取得出来ているようなのですが、どのように処理すれば良いかわかりません。
SQLパラメータの設定がおかしいのでしょうか?
ご教示のほど、よろしくお願いいたします。
C#
1コーusing System; 2using System.Collections.Generic; 3using System.Data; 4using System.Data.SqlClient; 5using System.Linq; 6using System.Web; 7using System.Web.UI; 8using System.Web.UI.WebControls; 9 10namespace LoginTest 11{ 12 public partial class Psearch : System.Web.UI.Page 13 { 14 //ページロード時の処理 15 public void Page_Load(object sender, EventArgs e) 16 { 17 GridView1.Visible = true; 18 19 } 20 21 //チーム名のドロップダウンリストの値を取得 22 public void Team_SelectedIndexChanged(object sender, EventArgs e) 23 { 24 var team = (DropDownList)sender; 25 this.Team.Text = this.Team.SelectedValue; 26 string tm = this.Team.Text.Trim(); 27 } 28 29 //顧客名のドロップダウンリストの値を取得 30 protected void Customer_SelectedIndexChanged(object sender, EventArgs e) 31 { 32 33 var customer = (DropDownList)sender; 34 this.Customer.Text = this.Customer.SelectedValue; 35 string ct = this.Customer.Text.Trim(); 36 } 37 38 //プロジェクト責任者のドロップダウンリストの値を取得 39 protected void Rpsn_SelectedIndexChanged(object sender, EventArgs e) 40 { 41 42 var rpsn = (DropDownList)sender; 43 this.Rpsn.Text = this.Rpsn.SelectedValue; 44 string rp = this.Rpsn.Text.Trim(); 45 } 46 47 //プロセス状況のドロップダウンリストの値を取得 48 protected void Prcs_SelectedIndexChanged(object sender, EventArgs e) 49 { 50 51 var prcs = (DropDownList)sender; 52 this.Prcs.Text = this.Prcs.SelectedValue; 53 string pr = this.Prcs.Text.Trim(); 54 55 } 56 57 //物件コードを入力時に文字列を取得 58 public void Pcinput_TextChanged(object sender, EventArgs e) 59 { 60 string pcinput = this.Pcinput.Text.Trim(); 61 62 } 63 64 //物件名を入力時に文字列を取得 65 protected void Pninput_TextChanged(object sender, EventArgs e) 66 { 67 string pninput = this.Pninput.Text.Trim(); 68 } 69 70 71 72 //検索ボタンをクリックした時の処理 73 public void Search_Click(object sender, EventArgs e) 74 { 75 //接続文字列を作成する 76 string sConnectionString; 77 sConnectionString = @"Data Source=(localdb)\ProjectsV13;Initial Catalog=ProjectManagement;Integrated Security=True"; 78 79 80 //コネクションオブジェクトを作成する 81 SqlConnection objConn = new SqlConnection(sConnectionString); 82 83 84 85 //SQL文を生成する 86 string sqlall = "SELECT DISTINCT TPROJECT.PCODE AS 物件コード, TPROJECT.NAME AS 物件名, MCUSTOMER.NAME AS 顧客名, TPROJECT.TEAM AS チーム名, TPROJECT.RPSN AS プロジェクト責任者, TPROJECT.PRCSNAME AS プロセス状況 FROM TPROJECT INNER JOIN MCUSTOMER ON TPROJECT.CCODE = MCUSTOMER.CCODE WHERE (TPROJECT.PCODE = '[@PCODE]') OR (TPROJECT.NAME = N'[@NAME]') OR (MCUSTOMER.NAME = N'[@NAME]') OR (TPROJECT.TEAM = N'[@TEAM]') OR (TPROJECT.RPSN = N'[@RPSN]') OR (TPROJECT.PRCSNAME = N'[@PRCSNAME]') "; 87 88 89 //コマンドオブジェクトを生成する 90 SqlCommand com = new SqlCommand(sqlall, objConn); 91 92 93 //接続をオープンする 94 objConn.Open(); 95 96 SqlParameter p1 = com.CreateParameter(); 97 SqlParameter p2 = com.CreateParameter(); 98 SqlParameter p3 = com.CreateParameter(); 99 SqlParameter p4 = com.CreateParameter(); 100 SqlParameter p5 = com.CreateParameter(); 101 SqlParameter p6 = com.CreateParameter(); 102 103 //チーム名のパラメータ1を作成 104 p1.ParameterName = "@TEAM"; 105 p1.SqlDbType = SqlDbType.NVarChar; 106 p1.Direction = ParameterDirection.Input; 107 p1.Value = this.Team.Text.Trim(); 108 com.Parameters.Add(p1); 109 110 111 112 //顧客名のパラメータ2を作成 113 p2.ParameterName = "@CUSTOMER"; 114 p2.SqlDbType = SqlDbType.NVarChar; 115 p2.Direction = ParameterDirection.Input; 116 p2.Value = this.Customer.Text.Trim(); 117 com.Parameters.Add(p2); 118 119 120 121 //プロジェクト責任者のパラメータ3を作成 122 p3.ParameterName = "@RPSN"; 123 p3.SqlDbType = SqlDbType.NVarChar; 124 p3.Direction = ParameterDirection.Input; 125 p3.Value = this.Rpsn.Text.Trim(); 126 com.Parameters.Add(p3); 127 128 129 130 //プロセス状況のパラメータ4を作成 131 p4.ParameterName = "@PRCS"; 132 p4.SqlDbType = SqlDbType.NVarChar; 133 p4.Direction = ParameterDirection.Input; 134 p4.Value = this.Prcs.Text.Trim(); 135 com.Parameters.Add(p4); 136 137 138 //物件名のパラメータ5を作成 139 p5.ParameterName = "@NAME"; 140 p5.SqlDbType = SqlDbType.NVarChar; 141 p5.Direction = ParameterDirection.Input; 142 p5.Value = this.Pninput.Text.Trim(); 143 com.Parameters.Add(p5); 144 145 146 147 //物件コードのパラメータ6を作成 148 p6.ParameterName = "@PCODE"; 149 p6.SqlDbType = SqlDbType.Char; 150 p6.Direction = ParameterDirection.Input; 151 p6.Value = this.Pcinput.Text.Trim(); 152 com.Parameters.Add(p6); 153 154 155 //読み込んだ情報を表示する 156 SqlDataReader sdr = com.ExecuteReader(); 157 158 if (sdr.HasRows) { 159 160 161 while(sdr.Read()) 162 { 163 164 GridView1.DataSource = sdr; 165 GridView1.DataBind(); 166 } 167 168 } 169 170 objConn.Close(); 171 } 172 173 174 } 175 176 177 178 } 179 180ド
回答2件
あなたの回答
tips
プレビュー