디버깅하는 동안 DataTable을 보는 방법
ADO.NET과 DataSets 및 DataTables를 사용하기 시작했습니다. 내가 가진 한 가지 문제는 디버깅을 시도 할 때 데이터 테이블에 어떤 값이 있는지 말하기가 매우 어렵다는 것입니다.
DataTable에 저장된 값을 빠르게 확인할 수있는 가장 쉬운 방법은 무엇입니까? 디버깅하는 동안 Visual Studio에서 콘텐츠를 볼 수있는 방법이 있습니까? 아니면 파일에 데이터를 쓰는 유일한 옵션입니까?
DataTable을 CSV 파일에 쓰는 작은 유틸리티 함수를 만들었습니다. 그러나 생성 된 CSV 파일은 잘 렸습니다. System.Guid를 작성하는 동안 마지막 줄이되어야하는 줄에서 약 3 줄이 지나면 파일이 중지됩니다. 이것이 내 CSV 변환 방법의 문제인지 아니면 DataTable의 원래 채우기 문제인지 알 수 없습니다.
최신 정보
스트림 작성자를 플러시하는 것을 잊은 마지막 부분은 잊어 버려.
중단 점이 설정된 경우 DataTable 또는 DataSet이 채워진 후 변수 위에 마우스를 올려 놓으면 돋보기가 표시됩니다. 클릭하면 DataTable Visualizer가 나타나며 여기에서 읽을 수 있습니다 .
아래 이미지에서 dt는 내 DataTable 변수이고 중단 점은이 값 위로 마우스를 가져갈 수 있도록 몇 줄 아래에 있습니다. Visual Studio 2008 사용.
DataTable Visualizer ( 이미지 크레딧 ) :
가장 바깥 쪽 클래스의 이름을 딴 클래스 안에 두 줄을 내 앱에 추가했습니다.
public MyClass()
{
// The following (2) lines are used for testing only. Remove comments to debug.
System.Diagnostics.Debugger.Launch();
System.Diagnostics.Debugger.Break();
}
그러면 앱이 중지되고 디버그 모드로 표시됩니다. 그런 다음 단계별로 이동하여 개체 위로 마우스를 가져 가면 개체의 값을 볼 수 있습니다.
데이터 세트 / 데이터 테이블에 중단 점을 설정하고 (중단 점에 대한 f9 바로 가기 키) 애플리케이션을 실행합니다 (f5는 바로 가기 키입니다). 중단 점이 오면 데이터 세트 / 데이터 테이블을 마우스로 가리키면 Visual Studio의 마우스 오버 이미지에 표시된 유리를 클릭합니다. .
참고 : 웹 구성에서 컴파일 debug = "true"가 true인지 확인하십시오. 그렇지 않으면 Visual Studio가 디버깅에 사용되지 않습니다.
/// <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();
}
참고 URL : https://stackoverflow.com/questions/1337084/how-to-view-a-datatable-while-debugging
'Development Tip' 카테고리의 다른 글
postgresql에서 특정 열이있는 테이블을 찾는 방법 (0) | 2020.10.13 |
---|---|
Python-루트 프로젝트 구조의 경로 가져 오기 (0) | 2020.10.13 |
jQuery-포스트 데이터로 리디렉션 (0) | 2020.10.13 |
각 그룹의 최대 값 선택 (0) | 2020.10.13 |
onclick 메서드에서 기본 이벤트 처리를 방지하는 방법은 무엇입니까? (0) | 2020.10.13 |