2011-08-30 3 views
0

저는 백엔드 프로세스와 웹 페이지에 .Net 프레임 워크를 광범위하게 사용했지만 Windows Forms를 사용할 필요가 전혀 없습니다. Windows Form 형식 기술을 사용하는 유일한 경험은 &입니다.Windows Form을 사용하여 데이터베이스에서 기본 CRUD를 어떻게 수행합니까?

내가 원하는 것을 찾는데 너무 기본적인 것처럼 튜토리얼을 검색했습니다. 또는 내가하려는 일에 부적절한 것 같습니다.

사용자가 데이터를보고, 필터링하고 검색 할 수 있도록 그리드 표시 (DataGridView를 사용하고 있습니다)를 양식에 작성하고 싶습니다. 페이지 매김 (pagination)과 같은 다른 것들도 참여하게 될 것이지만 나는 그것을 어떻게 할 것인지를 생각할 수 있다고 생각합니다.

내가 본 모든 예제는 편집, 추가 및 삭제를 위해 DataGridView를 사용합니다. 나는 사용자 사용자가 모든 것에 대한 그리드라는 생각에 만족하지 않는다. 혼란스럽고 오류가 발생하기 쉽습니다.

다양한 유형의 데이터를 추가, 편집 및 삭제하는 버튼이 있습니다. 예를 들어 고객 관리를위한 양식이있는 경우, 편집 할 행을 선택하고 버튼을 클릭하고 싶습니다. 이것은 모든 데이터가 텍스트 박스, 라디오 버튼, 체크 박스 및 드롭 다운 등에 사전로드 된 새로운 윈도우 폼을 열어야합니다.

추가 버튼을 클릭하면 모든 정보가 비어있는 것을 제외하고 편집과 동일한 화면으로 이동합니다. 행을 선택하고 삭제를 클릭하면 해당 고객을 삭제하고 DataGridView에서 제거합니다.

일부 컨트롤과 데이터 바인딩 옵션을 사용하면 테이블에서 모든 행을 가져 오는 것으로 보입니다. 어떻게하면 데이터베이스에서 관심있는 행을 얻을 수 있을까요? 모범 사례가 여기에 있는지 잘 모르겠습니다.

현재 정보 오버로드로 고통 받고 있으며 누군가가 올바른 방향으로 나를 가리키고 있음을 감사하게 생각합니다.

편집 :

내 델파이 일에서 나는 쿼리 또는 SqlCommand를 같이 뭔가를 설정 (드래그 앤 GUI에 드롭) 할 수있을 것으로 기대하고 있음을 언급하고 SQL 속성을 설정해야합니다, 아마도를 파라미터 SQL 조금. 폼에 데이터 소스를 드래그 앤 드롭하십시오. 데이터 원본을 SqlQuery/SqlCommand로 지정하고 명령에서 활성화를 클릭하십시오. 이제 끌어서 구성 요소를 폼에 놓고 데이터 소스 속성과 참조하는 필드를 설정할 수 있습니다.

답변

1

여러 가지 방법으로 할 수 있습니다. 그리고 도움이되는 프레임 워크가 많습니다. 엔티티 프레임 워크, NHibernate.

하지만 낮은 수준에서 데이터베이스 관련 개체를 사용할 수 있습니다. SqlConnection, SqlCommand, DataReader. 다음은 행을로드하는 SQL Server 관련 예제입니다.

private IList<IPosition> PositionsLoad(SqlConnection connection, PositionsRequest request) 
{ 

    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = connection; 
    cmd.CommandText = "select * from mytable WHERE x "; 
    cmd.CommandType = CommandType.Text; 

    //Get the reader 
    SqlDataReader reader = cmd.ExecuteReader; 
    IList<IPosition> ret = new List<IPosition>(); 

    if (reader.HasRows()) { 
     //Create our converter to convert DataReader into a business object/s 
     DataReaderToPosition readerConvert = new DataReaderToPosition(); 
     //loop rows 
     while (reader.Read) { 
      IPosition pos = readerConvert.DataReaderToBusinessObject(reader); 
      ret.Add(pos); 
     } 
    } 

    reader.Close(); 
    return ret; 

} 

DataReader를 사용 :

Public Overrides Function DataReaderToBusinessObject(ByVal reader As System.Data.IDataReader) As IPosition 

    Dim res As IPosition = New Position 

    res.ItemDate = reader.GetDateTime(reader.GetOrdinal("Date")) 
    res.Strategy = reader.GetString(reader.GetOrdinal("Strategy")) 
    res.SubStrategy = reader.GetString(reader.GetOrdinal("SubStrategy")) 
    res.BrokerPrime = reader.GetString(reader.GetOrdinal("BrokerPrime")) 
    res.BrokerExecuting = reader.GetString(reader.GetOrdinal("BrokerExecuting")) 
    res.AccountName = reader.GetString(reader.GetOrdinal("AccountName")) 
    res.ExpectedLoss = reader.GetDouble(reader.GetOrdinal("Expected_Loss")) 
    res.RiskNotional = reader.GetDouble(reader.GetOrdinal("Risk_Notional")) 
    res.ModelDelta = reader.GetDouble(reader.GetOrdinal("Model_Delta")) 
    res.ExpectedTrancheLoss = reader.GetDouble(reader.GetOrdinal("Expected_Tranche_Loss")) 
    res.BaseCorrelation = reader.GetDouble(reader.GetOrdinal("Base_Correlation")) 
    res.LossOnSingleNameDefault = reader.GetDouble(reader.GetOrdinal("Loss_on_Single_Name_Default")) 
    res.RiskCapitalAllocation = reader.GetDouble(reader.GetOrdinal("Risk_Capital_Allocation")) 
    res.MarginFundingAllocation = reader.GetDouble(reader.GetOrdinal("Margin_Funding_Allocation")) 
    res.DataSource = reader.GetString(reader.GetOrdinal("DataSource")) 

    Return res 
End Function 
2

this sample를 살펴 보자. WinForm 컨트롤 (DataGridView뿐만 아니라)에 대한 기본 ADO.NET 바인딩을 보여줍니다.

+0

IPOSition 및 PositionRequest 및 PositionsLoad에 사용되는 문은 무엇입니까? – shenk

관련 문제