2009-08-26 5 views
70

저는 ADO.NET과 DataSets 및 DataTables를 사용하기 시작했습니다. 내가 겪고있는 한 가지 문제는 디버깅 할 때 데이터 테이블에 어떤 값이 있는지 알려주는 것입니다.디버깅하는 동안 DataTable을 보는 방법

DataTable에 저장된 값을 빠르게 볼 수있는 가장 쉬운 방법은 무엇입니까? 디버깅 중에 Visual Studio에서 내용을 볼 수 있습니까 아니면 파일에 데이터를 쓰는 유일한 옵션입니까?

DataTable을 CSV 파일에 쓰는 작은 유틸리티 함수를 만들었습니다. 그러나 생성 된 CSV 파일은 끊어졌습니다. System.Guid를 작성하는 도중 마지막 줄에 있었던 것부터 3 줄 정도가 파일이 멈 춥니 다. 이 문제가 내 CSV 변환 방법이나 DataTable의 원래 채우기와 관련이 있는지 알 수 없습니다.

업데이트

난 그냥 내 스트림 작가를 세척하는 것을 잊었다 마지막 부분을 잊어 버려요.

답변

169

중단 점을 설정하면 DataTable 또는 DataSet을 채운 후에 변수 위로 마우스를 가져 가면 돋보기 모양을 볼 수 있습니다. 이 버튼을 클릭하면 DataTable Visualizer가 나타납니다. 자세한 내용은 here을 참조하십시오.

아래 이미지에서 dt는 내 DataTable 변수이고이 값 위로 마우스를 가져갈 수 있도록 몇 줄 아래에 중단 점이 있습니다. 비주얼 스튜디오를 사용하여 2008 년

alt text

DataTable을 시각화 (image credit) :
alt text

+3

오, 나는 그것을 놓쳤다는 것을 믿을 수 없다. 감사! –

+0

멋진 일 Rsolberg .one up me vote from me !!! – anishMarokey

+17

OMFG, 내가 틀 렸나? !!!! AAAARRRGHGHGHGHGHGHG, 너무 많이 낭비하는 시간은 데이터베이스를 런타임에 바인딩하기 만하면됩니다 !!! – Pierreten

1

내가 가장 바깥 쪽 클래스의 이름을 딴 클래스 안에 내 응용 프로그램에 두 줄을 추가 :

public MyClass() 
    { 
     // The following (2) lines are used for testing only. Remove comments to debug. 
     System.Diagnostics.Debugger.Launch(); 
     System.Diagnostics.Debugger.Break(); 
    } 

이렇게하면 앱이 중지되고 디버그 모드로 실행되어야합니다. 그런 다음 단계를 밟아 객체 위로 마우스를 가져 가면 객체의 값을 볼 수 있습니다.

1

데이터 세트/데이터 테이블 (중단 점의 f9 단축 키)에 중단 점을 설정하고 응용 프로그램을 실행합니다 (f5는 단축키입니다). 중단 점이 마우스를 가리키면 데이터 세트/데이터 테이블이 호버에 표시된 유리를 클릭합니다 비주얼 스튜디오에서 이미지.

참고 : 웹 설정에서 컴파일 컴파일 디버그 = "true"가 true입니다 .Eclipse Visual Studio에서 디버깅을하지 마십시오.

0
/// <summary> 
    /// Dumps the passed DataSet obj for debugging as list of html tables 
    /// </summary> 
    /// <param name="msg"> the msg attached </param> 
    /// <param name="ds"> the DataSet object passed for Dumping </param> 
    /// <returns> the nice looking dump of the DataSet obj in html format</returns> 
    public static string DumpHtmlDs(string msg, ref System.Data.DataSet ds) 
    { 
     StringBuilder objStringBuilder = new StringBuilder(); 
     objStringBuilder.AppendLine("<html><body>"); 

     if (ds == null) 
     { 
      objStringBuilder.AppendLine("Null dataset passed "); 
      objStringBuilder.AppendLine("</html></body>"); 
      WriteIf(objStringBuilder.ToString()); 
      return objStringBuilder.ToString(); 
     } 

     objStringBuilder.AppendLine("<p>" + msg + " START </p>"); 
     if (ds != null) 
     { 
      if (ds.Tables == null) 
      { 
       objStringBuilder.AppendLine("ds.Tables == null "); 
       return objStringBuilder.ToString(); 
      } 


      foreach (System.Data.DataTable dt in ds.Tables) 
      { 

       if (dt == null) 
       { 
        objStringBuilder.AppendLine("ds.Tables == null "); 
        continue; 
       } 
       objStringBuilder.AppendLine("<table>"); 

       //objStringBuilder.AppendLine("================= My TableName is " + 
       //dt.TableName + " ========================= START"); 
       int colNumberInRow = 0; 
       objStringBuilder.Append("<tr><th>row number</th>"); 
       foreach (System.Data.DataColumn dc in dt.Columns) 
       { 
        if (dc == null) 
        { 
         objStringBuilder.AppendLine("DataColumn is null "); 
         continue; 
        } 


        objStringBuilder.Append(" <th> |" + colNumberInRow.ToString() + " | "); 
        objStringBuilder.Append( dc.ColumnName.ToString() + " </th> "); 
        colNumberInRow++; 
       } //eof foreach (DataColumn dc in dt.Columns) 
       objStringBuilder.Append("</tr>"); 

       int rowNum = 0; 
       foreach (System.Data.DataRow dr in dt.Rows) 
       { 
        objStringBuilder.Append("<tr><td> row - | " + rowNum.ToString() + " | </td>"); 
        int colNumber = 0; 
        foreach (System.Data.DataColumn dc in dt.Columns) 
        { 
         objStringBuilder.Append(" <td> |" + colNumber + "|"); 
         objStringBuilder.Append(dr[dc].ToString() + " </td>"); 
         colNumber++; 
        } //eof foreach (DataColumn dc in dt.Columns) 
        rowNum++; 
        objStringBuilder.AppendLine(" </tr>"); 
       } //eof foreach (DataRow dr in dt.Rows) 

       objStringBuilder.AppendLine("</table>"); 
       objStringBuilder.AppendLine("<p>" + msg + " END </p>"); 
      } //eof foreach (DataTable dt in ds.Tables) 

     } //eof if ds !=null 
     else 
     { 

      objStringBuilder.AppendLine("NULL DataSet object passed for debugging !!!"); 
     } 
     return objStringBuilder.ToString(); 

    } 
+0

무엇입니까? WriteIf (objStringBuilder.ToString()); – Kiquenet

관련 문제