2012-02-09 3 views
0

저는 asp.net을 처음 사용합니다. 그냥 내 질문을 읽기 전에 너희들에게 알리고 싶었다. 주소록을 만들고 SQL 데이터베이스의 데이터를 aspx 페이지에있는 gridview에 표시하기 위해 데이터 세트를 사용하고 있습니다. 나는이 코드를 가지고있다.데이터 세트 및 gridview 상호 작용 (데이터 업데이트)

  SqlConnection conn = new SqlConnection(conectionstring); 
      conn.Open(); 
      string sql = "SELECT * FROM Directorio"; 
      SqlDataAdapter myCommand = new SqlDataAdapter(sql, conn); 
      DataSet ds = new DataSet(); 
      myCommand.Fill(ds); 
      DataView source = new DataView(ds.Tables[0]); 
      GridView1.DataSource = source; 
      GridView1.DataBind(); 

이 코드는 데이터베이스에서 데이터를 가져 와서 데이터 세트를 채우고이를 gridview에 표시한다. 내 질문은 어떻게 할 수있는 gridview, 변경 및 SQL 데이터베이스에서 변경 내용을 적용 할 수 있도록 데이터 집합을 업데이트 할 수 있습니다. 많은 자습서를 찾았지만 일을 다르게합니다. 그들은 데이터베이스를 프로젝트에 연결하고이 코드를 코딩하지 않습니다. 수동으로 수행하는 방법을 배우고 싶습니다. 편집 단추를 사용하여 열을 만든 gridview 속성에서 편집 기능을 사용하려고했지만이 단추를 클릭하면 응용 프로그램이 충돌합니다. 덕분에 동료 프로그래머 :

PS : 나는

답변

1

는 기본적으로 데이터 소스 컨트롤의 요구 때문에 현물 asp.net 구조의 맥락에서 복잡의 변경 사항을 조율 ADO.NET 아키텍처를 알아 보았 않습니다. http://msdn.microsoft.com/en-us/library/aa581776.aspx

+0

안녕. 당신의 대답에 감사드립니다. 튜토리얼은 매우 유용하지만, 다시 "수동으로하지 않는 것"에 대한 관심이 여전히 남아 있습니다. 그리고 내가 왜 그런 식으로하고 싶지 않은지 궁금해 할 것입니다. 왜냐하면 제가 개발 한 과거의 프로 요트에서 VB 및 Windows 양식에서 나는 그것을 사용하고 수동으로 데이터베이스에 액세스하는 충돌을 만들었습니다. – itsmedavid

+0

내가 틀렸다면 나에게 시정을 의심하지 마십시오. – itsmedavid

+0

아마도 ObjectDataSource의 예제를 보면 두 가지면에서 가장 좋을 것입니다. http://msdn.microsoft.com/en-us/library/ms178538.aspx –

0

당신은 꽤 몇 가지 옵션이 :이 기사를 즐길 수 -

은 내가 당신의 생각에서 오는 어디에 있는지 생각하고, 나는 완전히이 있었다. 나는 당신이 asp.net MVC를 사용하여 webforms 및 asp.net을 사용하고 있다고 가정합니다.

프로젝트의 안정성이나 구현 방법에 따라 몇 가지 경로를 사용할 수 있습니다. 데이터 액세스 계층이있는 경우 EF (Entity Framework)를 사용하여 데이터베이스에 대한 데이터 검색 및 제출을 처리 할 수 ​​있습니다. EF는 웹폼 외부에서 많은 CRUD 작업을 처리 할 수 ​​있다는 점에서 정말 좋습니다. 완전한 추상화는 아니지만 코드 숨김에서 SQL을 가져와 별도의/관리 가능한 계층으로 가져옵니다. 이 작은 프로젝트라도 그냥 같은 ADO를 사용하여 다시 테이블에 데이터를 삽입 할 수 있습니다 당신과 함께 주변에 재생/SQL 인 경우

public int CreateNewUser(string username, string password) 
    { 
     int insertUser = DatabaseUtilities.Perform_CRUD_Operation(
      String.Format(
       "INSERT INTO ContactsUser (UserName, Password) " + 
       "VALUES ('{0}', '{1}', 
       username, password), 
      ConnectionString); 
    } 


//factored out the Perform operation for reuse in other classes you could do all this in one call 

public static int Perform_CRUD_Operation(string sqlStatement, string connectionString) 
    { 
     OleDbConnection con = new OleDbConnection("Provider=SQLOLEDB;" + connectionString); 
     OleDbCommand cmd = new OleDbCommand(sqlStatement, con); 

     try 
     { 
      con.Open(); 
      int affectedRows = cmd.ExecuteNonQuery(); 
      if (affectedRows == 1) 
      { 
       return 0; 
      } 
      else 
      { 
       return AFFECTED_ROWS_ERROR; 
      } 
     } 
     catch (Exception) 
     { 
      return UNHANDLED_ERROR; 
     } 
     finally 
     { 
      con.Close(); 
     } 
    } 

위 이건 그냥 예입니다. 생산 코드 을 위해 무엇을하고 있다면 나는 EF 나 저장 프로 시저의 사용을 강력하게 제안 할 것입니다. 위와 같은 코드를 사용하는 것은 테스트 나 개념 증명에 대해서는 괜찮지 만 SQL injection에 실제로 취약하며 매우 안전하지 않을 수 있습니다.

UI 또는 코드 배후에서 코드를 보지 않고 그리드보기를 수행하면 수행 할 작업이나 볼 위치에 대한 제안을하는 것이 불가능할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 정말 고마워서 분명히 당신의 충고를 받아 들일 것입니다. – itsmedavid

관련 문제