Cách xem DataTable trong khi gỡ lỗi


81

Tôi chỉ mới bắt đầu sử dụng ADO.NET và DataSets và DataTables. Một vấn đề tôi đang gặp phải là có vẻ khá khó để biết giá trị nào trong bảng dữ liệu khi cố gắng gỡ lỗi.

Một số cách đơn giản nhất để xem nhanh giá trị nào đã được lưu trong DataTable là gì? Có cách nào đó để xem nội dung trong Visual Studio khi gỡ lỗi hay là tùy chọn duy nhất để ghi dữ liệu ra tệp?

Tôi đã tạo một hàm tiện ích nhỏ sẽ ghi DataTable ra tệp CSV. Tuy nhiên, tệp CSV kết quả được tạo đã bị cắt. Khoảng 3 dòng từ dòng cuối cùng ở giữa khi viết ra một System.Guid tệp chỉ dừng lại. Tôi không thể biết đây có phải là vấn đề với phương pháp chuyển đổi CSV của mình hay không hay là tập hợp ban đầu của DataTable.

Cập nhật

Quên phần cuối cùng, tôi vừa quên xả người viết luồng của mình.

Câu trả lời:


197

Với bộ điểm ngắt, sau khi DataTable hoặc DataSet được điền, bạn có thể nhìn thấy kính lúp nếu di chuột qua biến. Nếu bạn nhấp vào nó, nó sẽ hiển thị DataTable Visualizer, bạn có thể đọc tại đây .

Trong hình ảnh này mà bạn thấy bên dưới, dt là biến DataTable của tôi và điểm ngắt được nhấn vài dòng bên dưới cho phép tôi di chuột qua giá trị này. Sử dụng Visual Studio 2008.

văn bản thay thế

DataTable Visualizer ( tín dụng hình ảnh ):
văn bản thay thế


5
Tôi không biết làm thế nào mà tôi đã đi quá lâu mà không tìm kiếm này! Bạn sẽ nghĩ rằng họ sẽ làm cho biểu tượng kính lúp nhỏ xíu đó rõ ràng hơn một chút!
Jason

2
Tôi đồng ý. Làm thế nào trên thế giới mà tôi đã bỏ lỡ điều này? Tôi đã sử dụng VS kể từ lần đầu tiên nó ra mắt. Tính năng này được thêm vào khi nào?
Zath.

Câu trả lời rất hay! Vấn đề duy nhất là Trình hiển thị không hiển thị số hàng. Nếu tôi cần kiểm tra các giá trị trong một hàng cụ thể, tôi có thể làm điều đó như thế nào?
AllSolutions,

2

đặt điểm ngắt trên tập dữ liệu / dữ liệu (phím tắt f9 cho điểm ngắt) và chạy ứng dụng của bạn (f5 là phím tắt) Khi điểm ngắt xuất hiện, di chuột vào tập dữ liệu / dữ liệu, nhấp vào kính hiển thị trong hình ảnh di chuột trong studio trực quan .

Lưu ý: hãy kiểm tra biên dịch debug = "true" là đúng trong cấu hình web. Đây là visual studio sẽ không đi gỡ lỗi.


1

Tôi đã thêm hai dòng vào ứng dụng của mình bên trong một lớp được đặt tên theo lớp ngoài cùng:

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

Thao tác này sẽ dừng ứng dụng và hiển thị nó ở chế độ gỡ lỗi. Sau đó, bạn có thể bước qua nó và xem các giá trị trong các đối tượng của mình khi bạn di chuột qua chúng.


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();

    } 

nó là gì viếtif ?? WriteIf (objStringBuilder.ToString ());
Kiquenet
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.