C#でSQLの結果をlabelに表示したい。
商品表の検索表示画面を作成しています。
商品検索画面で商品名・金額を入力し検索ボタンを押すと、該当する結果が表示されるプログラムを作っています。
色々調べていると配列を作成し、その配列にSQLの結果を入れforeachでlabelに表示といった
やり方があったのですが、商品名のみ表示され金額が表示されないという結果になってしまいました。
DBではProductがnvarchar(max)、AmountがintでProducts表を作っています。
何かアドバイスいただけたら幸いです。
追記:
WindowsFormsで作成しておりOSはwindows10、VisualStudioは16.9.2、DBはMSSQL、.NET Frameworkで4.8.04084、エディションバージョンはMicrosft SQL Server Express Edition(64-bit)です。
C#
1private void button3_Click(object sender, EventArgs e) 2 { 3 //検索結果格納用 4 var resultsPro = new List<string>(); 5 var resultsAmo = new List<string>(); 6 7 8 using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ProInfo"].ConnectionString)) 9 { 10 string ProductName = textBox3.Text; 11 string stAmount = textBox4.Text; 12 int Amount = int.Parse(stAmount); 13 14 try 15 { 16 conn.Open(); 17 var cmd = conn.CreateCommand(); 18 //商品名・金額が完全一致の時 19 cmd.CommandText = "select Product,Amount from Products where Products.Product like '%" + ProductName + "%'" 20 + "and Products.Amount like '%" + Amount + "%'"; 21 22 //sqlの実行、結果を各resultに 23 using(var reader = cmd.ExecuteReader()) 24 { 25 while(reader.Read() == true) 26 { 27 resultsPro.Add((reader["Product"] as string)); 28 } 29 30 } 31 using (var reader = cmd.ExecuteReader()) 32 { 33 while (reader.Read() == true) 34 { 35 resultsAmo.Add((reader["Amount"] as string)); 36 } 37 38 } 39 40 41 } 42 catch (Exception exception) 43 { 44 Console.WriteLine(exception); 45 } 46 finally 47 { 48 conn.Close(); 49 } 50 } 51 //商品名をlabel6に 52 string resultText1 = string.Empty; 53 foreach(string item in resultsPro) 54 { 55 resultText1 += item + "\r\n"; 56 } 57 label6.Text = resultText1; 58 59 //金額をlabel7に 60 string resultText2 = string.Empty; 61 foreach (string item in resultsAmo) 62 { 63 resultText2 += item + "\r\n"; 64 } 65 label7.Text = resultText2; 66 }
回答1件
あなたの回答
tips
プレビュー