2013-08-27 1 views
1

목록 상자에서 데이터베이스의 항목을 표시하는 데 작동하지만 목록 상자에서 값을 선택하면 그 사람에 대한 정보가 텍스트 상자에 다시 표시됩니다. 그게 내가 일할 수없는 일이야.listBox에서 데이터베이스를 연결하고 listBox에서 인덱스를 선택하면 textBox에 값을 표시합니다. C#

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using MySql.Data.MySqlClient; 

namespace program 
{ 
    public partial class Form8 : Form 
    { 
     public Form8() 
     { 
      InitializeComponent(); 
      fill_listbox(); 
     } 

     void fill_listbox() 
     { 
      string constring = "datasource=sql2.freesqldatabase.com;port=3306;username=sql217040;password=xxxxx"; 
      string Query = "select * from sql217040.fakedata ;"; 
      MySqlConnection conDataBase = new MySqlConnection(constring); 
      MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase); 
      MySqlDataReader myReader; 

      try 
      { 
       conDataBase.Open(); 
       myReader = cmdDataBase.ExecuteReader(); 
       while (myReader.Read()) 
       { 
        string id1 = myReader.GetString("id"); 
        string name1 = myReader.GetString("name"); 
        string surname1 = myReader.GetString("surname"); 
        listBox1.Items.Add(id1 + ' ' + name1 + ' ' + surname1); 
       } 
      } 
      catch (Exception ex) 
      { 

       MessageBox.Show(ex.Message); 
      } 
     } 

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string constring = "datasource=sql2.freesqldatabase.com;port=3306;username=sql217040;password=xxxxx"; 
      string Query = "select * from sql217040.fakedata where name='" + listBox1.Text + "' ;"; 
      MySqlConnection conDataBase = new MySqlConnection(constring); 
      MySqlCommand cmdDataBase = new MySqlCommand(Query, conDataBase); 
      MySqlDataReader myReader; 

      try 
      { 
       conDataBase.Open(); 
       myReader = cmdDataBase.ExecuteReader(); 

       while (myReader.Read()) 
       { 

        string sname = myReader.GetString("name"); 
        string ssurname = myReader.GetString("surname"); 
        string sphone = myReader.GetString("phone"); 
        textBox1.Text = sname; 
        textBox2.Text = ssurname; 
        //telephone.Text = sphone; 

       } 

      } 
      catch (Exception ex) 
      { 

       MessageBox.Show(ex.Message); 
      } 
     } 

    } 
} 
+0

작업에 올바른 도구를 사용하고 있지 않습니다. listbox 대신 listview/datagridview를 사용해야합니다. 데이터베이스에 대한 왕복 여행/ – Ehsan

+0

직면 한 문제는 무엇입니까? –

+0

listBox에서 색인을 선택할 때 textBox의 값이 표시되지 않습니다. – noobie3000

답변

0

이상적으로 내가 DataGridView에이

void fill_listbox() 
    { 
     try 
     { 
     string constring = "datasource=sql2.freesqldatabase.com;port=3306;username=sql217040;password=xxxxx"; 
     string Query = "select * from sql217040.fakedata ;"; 
     using(MySqlConnection conDataBase = new MySqlConnection(constring)) 
     { 
      conDataBase.Open(); 
      using (SqlDataAdapter a = new SqlDataAdapter(Query, conDataBase)) 
      { 
       DataTable t = new DataTable(); 
       a.Fill(t);   
       // Render data onto the screen 
       dataGridView1.DataSource = t; // <-- datagridview1 is the gridview i have added 
     } 
     } 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); 
     } 
    } 

처럼 방법을 변경하고있는 gridview의 세포를 두 번 클릭 이벤트에서

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) 
     { 
      string name = dataGridView1.Rows[e.RowIndex].Cells["columnname"].Value.ToString(); 
     } 
+0

감사합니다. 도와 줬어. – noobie3000

+0

당신은 환영합니다 – Ehsan

0

왜 돈을 이런 식으로 값을 읽을 수 있도록 목록 상자를 바꿀 것 DataReader 대신 DataSet을 사용합니다.

모든 항목을 목록 상자에 추가하고 선택한 항목을 selectedItemIndex 목록에있는 DataSet에서 가져옵니다. 목록 상자에서 선택한 인덱스가 변경되면 추가 쿼리가 저장됩니다.