2012-05-04 10 views
0

winform에서 .net 4.0 C#을 사용합니다. 이제 저장 프로 시저를 사용하여 데이터베이스에 새 행을 삽입합니다. 분명히 asp.net과 windows 양식 사이의 바인딩 단계로 혼란 스러워요. asp.net에서는 매우 간단하지만 winform에서는 우리가 사용해야하는 것처럼 보입니다 BindingSource 개체 ???datagridview에 데이터 소스 바인딩하기

winform에서 우리는 다른 방식을 사용해야 함을 의미합니다. 다음 코드는 asp.net에서 새로운 레코드와 바인딩을 삽입하는 데 사용했던 코드입니다. 데이터 원본을 datagridview에 바인딩하기 위해 다시 작성하는 방법.

public void ExecuteNonQuery(string storedProcedure, Dictionary<string, object> parameters) 
    { 
     using (SqlConnection conn = new SqlConnection(_connectionString)) 
     { 
      conn.Open(); 
      using (SqlCommand cmd = new SqlCommand(storedProcedure, conn)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       if (parameters != null) 
       { 
        foreach (string parameter in parameters.Keys) 
        { 
         cmd.Parameters.AddWithValue(parameter, parameters[parameter] ?? DBNull.Value); 
        } 
       } 
       cmd.ExecuteNonQuery(); 
      } 
      conn.Close(); 
     } 
    } 

매개 변수를 설정 한 후, 다음 원하는 전화 :

 DBAccess dbaccess = new DBAccess(connString); 
     dbaccess.ExecuteNonQuery("InsertStoredProcedure", parameters); 

내가있는 DataGridView에 데이터베이스를 결합하는 방법을 모르겠어요. 감사합니다. .

답변

0

데이터베이스에 행을 삽입 한 경우 데이터베이스에서 행을 다시 가져와야합니다. 다른 저장 프로 시저 (SELECT 쿼리 사용)를 사용합니다.

당신은 ExecuteNonQuery를 사용하고 있습니다. 즉, 데이터베이스에서 아무것도 쿼리하지 않습니다. 그래서 그리드의 형태로 결과를주지 않을 것입니다. 하지만 영향을받는 행 수가있는 정수 만 반환합니다.

내 제안은 행을 삽입 한 후 cmd.ExecuteReader()로 행을 반입하고 SqlReader 개체를 Grid에 바인딩하는 다른 쿼리를 작성하는 것입니다.

나는 당신의 문제를 해결하기를 희망한다.

+0

그런 저장 프로 시저 dbaccess.ExecuteReader ("Admin_Get_Table")가 있다고 가정하십시오. 테이블 반환해야합니까? –

+0

Grid를 DataReader에 직접 바인딩 할 수 있습니다. 예 : GridView1.DataSource = dbaccess.ExecuteReader ("Admin_Get_Table"); GridView1.DataBind(); – Sankalp

+0

그것이 제가 언급 한 질문입니다. .DataBind는 asp.net 메서드입니다. winform에서는 사용할 수 없습니다. –

관련 문제