2013-04-10 5 views
0

인사말 프로그래머,C# 데이터베이스에서 텍스트 상자로 데이터를 가져 오는 방법

내 Windows 양식에 데이터베이스에 연결된 일부 텍스트 상자와 콤보 박스가 있습니다. 내 생각에, 콤보 상자의 값이 변경되면 텍스트 상자의 데이터도 변경됩니다. 콤보 상자에서 고객 ID를 선택할 때와 마찬가지로 성명이나 주소 등 고객의 데이터가 텍스트 상자에로드됩니다. 그러나 양식을 열면 콤보 박스가 사라지고 텍스트 상자가 비어있게됩니다. Access 데이터베이스와 Visual Studio 2012를 사용하여 코드를 작성하고 있습니다. 데이터라는

private void comboBox1_SelectedValueChanged(object sender, EventArgs e) 
    { 
     string pc = Convert.ToString(comboBox1.SelectedValue); 
     string sql = "SELECT * FROM Customer WHERE CustomerID="+ pc; 
     Data.Customer_Data(sql, pc); 

     txtfullname.Text = Data.fullname; 
     txtadress.Text = Data.adress; 
     txtcity.Text = Data.city; 
     txtemail.Text = Data.email; 

    } 

그리고 내 클래스 :

public static string cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\Database1.accdb"; 
public static string fullname = ""; 
public static string adress = ""; 
public static string city = ""; 
public static string email = ""; 
public static void Customer_Data(string sql, string pc) 
    { 
      if (pc == "") 
      { 
       return; 
      } 

      else 
      { 
       OleDbConnection oleDbConnection1 = new System.Data.OleDb.OleDbConnection(cs); 
       oleDbConnection1.Open(); 
       OleDbCommand oleDbCommand1 = new System.Data.OleDb.OleDbCommand(sql,oleDbConnection1); 
       OleDbDataReader reader = oleDbCommand1.ExecuteReader(); 

       if (!reader.Read()) 
        return; 

       fullname = reader["fullname"].ToString(); 
       adress = reader["adress"].ToString(); 
       city = reader["city"].ToString(); 
       email = reader["email"].ToString(); 


       oleDbConnection1.Close(); 
      } 
    } 
+0

콤보 상자가 사라집니다. comboBox 속성을 false로 표시하도록 설정 했습니까? – Obama

+0

form_Load 이벤트에 어떤 코드가 있습니까? – StackTrace

+0

아니요, 그냥 사라집니다 – user2241062

답변

-1

다음과 같은 디버깅 기술 중 하나를 시도하고 무슨 일이 일어나고 있는지 볼 수 있습니다 여기에 내 코드 ..

C# 코드이다.

  1. 이 줄을 입력 한 후 Data.Customer_Data(sql, pc); 속성에 대한 데이터가 올바르게로드됩니까?
  2. 전달 된 해당 고객 ID의 데이터베이스 값이 있는지 확인할 수도 있습니까? 따라서이 조건 if (!reader.Read()) return;은 실행되지 않습니다.
  3. 페이지로드 방법을 확인하십시오 (콤보 상자의 표시 여부와 관련이 없지만 시도 할 때 아무런 해가없는 것 같습니다).

여기에 언급되지 않은 작업이 있으면 더 많은 코드가 도움이 될 수 있습니다.

+0

리더 [ "fullname"] 대신 리더 [0]을 사용하고 리더 [ "adress"]는 리더 [1]을 사용해보십시오. –

+0

또한 클래스의 정적 변수가 엉망인 지 확인하십시오. –

+0

나는 그 문제를 발견했다, 나의 데이터베이스, 다른 테이블은 이름에 공백이있다. Visual Studio는 그런 식으로하지 않는다. 어쨌든 anwser에게 감사드립니다. – user2241062

관련 문제