Как просмотреть DataTable во время отладки
Я только начинаю использовать ADO.NET и наборы данных и Таблицы данных. Одна из проблем, с которой я сталкиваюсь, кажется довольно трудно сказать, какие значения находятся в таблице данных при попытке отладки.
Каковы некоторые из самых простых способов быстро увидеть, какие значения были сохранены в DataTable? Есть ли способ увидеть содержимое в Visual Studio во время отладки или это единственный вариант для записи данных в файл?
Я создал небольшую функцию полезности, которая будет запишите DataTable в файл CSV. Тем не менее, созданный в результате CSV-файл был отрезан. Около 3 строк из того, что должно было быть последней строкой в середине записи системы.Идентификатор файла просто остановится. Я не могу сказать, является ли это проблемой с моим методом преобразования CSV или исходным населением DataTable.
обновление
забудьте последнюю часть я просто забыл смыть мой поток писатель.
4 ответа:
при заданной точке останова после заполнения DataTable или DataSet можно увидеть увеличительное стекло при наведении указателя мыши на переменную. Если вы нажмете на него, он вызовет визуализатор DataTable, о котором вы можете прочитать здесь.
на этом изображении вы видите ниже, dt - это моя переменная DataTable, и точка останова была поражена несколькими строками ниже, что позволило мне навести курсор на это значение. Использование Visual Studio 2008.
DataTable Визуализатор (кредитного изображения):
Я добавил две строки в мое приложение внутри класса, названного в честь самого внешнего класса:
public MyClass() { // The following (2) lines are used for testing only. Remove comments to debug. System.Diagnostics.Debugger.Launch(); System.Diagnostics.Debugger.Break(); }
Это должно остановить приложение и вывести его в режим отладки. Затем вы можете пройти через него и посмотреть на значения в объектах при наведении на них.
установите точку останова на dataset / datatable (клавиша быстрого доступа f9 для точки останова) и запустите приложение (F5-это shortcutkey ) когда точка останова приходит наведите курсор мыши на dataset/datatable нажмите на стекло, показанное на изображении наведения в 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(); }