2012-07-03 2 views
1
public class InnovationSubmission 
    { 
     public OleDbConnection connectr = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DatabaseTEST.accdr;Jet OLEDB:Database Password=DWPOIT"); 
     public OleDbDataAdapter Adaptor = new OleDbDataAdapter(); 



     private List<SelectListItem> _Area = new List<SelectListItem>(); 
     private List<SelectListItem> _Team = new List<SelectListItem>(); 


     public int ID { get; set; } 
     [Required(ErrorMessage="Please enter a short description")] 
     public string ShortDescription { get; set; } 
     [Required(ErrorMessage = "Please enter a detailed description")] 
     public string DetailedDescription { get; set; } 
     public string Status { get; set; } 

     [Required(ErrorMessage = "Please enter your name")] 
     public string Originator { get; set; } 

     [Required(ErrorMessage = "Please enter your email address")] 
     [RegularExpression(".+\\@.+\\..+", 
     ErrorMessage = "Please enter a valid email address")] 
     public string OriginatorEmail { get; set; } 
     [Required] 
     public string SelectedArea { get; set; } 
     [Required] 
     public string SelectedTeam { get; set; } 


     public List<SelectListItem> Area 
     { 
      get { return _Area; } 
     } 

     public List<SelectListItem> Teams 
     { 
      get 
      { 

       string SQLSelect = ("SELECT * FROM Teams"); 
       OleDbCommand sCommand = new OleDbCommand(SQLSelect, connectr); 
       Adaptor.SelectCommand = sCommand; 


       connectr.Open(); 
       Adaptor.Fill(areaTable); 
       connectr.Dispose(); 

       foreach (DataRow row in areaTable.Rows) 
       { 
        _Team.Add(new SelectListItem() { Text = row[1].ToString(), Value = row[1].ToString() }); 

       } 

       return _Team; 
      } 
     } 

     public DataTable areaTable = new DataTable(); 


     } 
} 
+1

'커넥터'란 무엇입니까? (속성 액세스에 대한 데이터베이스 가져 오기 작업을 수행하는 것은 꽤 냄새가 난다는 점에 유의하십시오. 또한 'using'문과 매번 새로운 연결을 사용해야합니다.) –

+0

OledBconnection 객체인데, 나는 다른 2 개의 Datatable을 활용하고 싶습니다. 클래스의 새 인스턴스를 만들 때이 특정 클래스의 일부. – Derek

+0

물론 연결이 다른 곳에서 열리지 않았습니까? – BugFinder

답변

1

나에게 커넥터 개체에 문제가있는 것 같습니다. 아마 다른 곳에서 사용되었으므로 예외가 발생합니다. 새 연결을 열고 쿼리를 수행 한 다음 닫습니다. 사용 블록 내에서 쿼리를 수행하려면 using을 사용해보십시오.

또한 주석에서 이미 언급했듯이 속성 가져 오기 도구에서 db 쿼리를 수행하는 것은 좋지 않습니다. 이상하고 해킹 된 것처럼 보입니다.

+0

감사합니다. 다음에 시도해 보겠습니다. – Derek

-1

이렇게 사용하면 괜찮습니다!

public List<SelectListItem> Teams 
     { 
      get 
      { 

       string SQLSelect = ("SELECT * FROM Teams"); 
       OleDbCommand sCommand = new OleDbCommand(SQLSelect, connector); 
       Adaptor.SelectCommand = sCommand; 


       connector.Open(); 
       Adaptor.Fill(areaTable); 
       connector.Dispose(); 

       foreach (DataRow row in areaTable.Rows) 
       { 
        _Team.Add(new SelectListItem() { Text = row[1].ToString(), Value = row[1].ToString() }); 

       } 

       return _Team; 
      } 
     } 
+0

응답하지 않고 더 많은 정보를 제공하려면 질문을 업데이트해야합니다. 문제가 커넥터 내에 있는지 또는 커넥터를 선언했는지 확인하십시오. 질문에서 해당 부분을 이동하고 커넥터를 추가하면 원하는 답변을 얻을 수 있습니까? – phadaphunk