2009-08-26 26 views
70

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

Một số cách dễ nhất để nhanh chóng xem những giá trị nào đã được lưu trong một DataTable? Có someway để xem các nội dung trong Visual Studio trong khi gỡ lỗi hoặc là lựa chọn duy nhất để ghi dữ liệu ra một tập tin?

Tôi đã tạo một chức năng tiện ích nhỏ sẽ viết 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ừ những gì nên có được dòng cuối cùng ở giữa viết ra một System.Guid tập tin 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 hay số liệu ban đầu của DataTable hay không.

Cập nhật

Quên phần cuối cùng tôi chỉ quên tuôn nhà văn dòng của tôi.

Trả lời

169

Với thiết lập điểm ngắt, sau khi DataTable hoặc Số liệu được điền, bạn có thể thấy kính lúp nếu bạn di chuột qua biến. Nếu bạn nhấp vào nó, nó sẽ đưa ra DataTable Visualizer, mà bạn có thể đọc về here.

Trong hình ảnh này 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 một 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.

alt text

DataTable Visualizer (image credit):
alt text

+3

Ồ, tôi không thể tin rằng mình đã bỏ lỡ điều đó. Cảm ơn! –

+0

làm việc tốt Rsolberg .một cuộc bỏ phiếu từ tôi !!! – anishMarokey

+17

OMFG, LÀM THẾ NÀO TÔI MISS NÀY !!!! AAAARRRGHGHGHGHGHGHG, THỜI GIAN VẢI LỚN BẮT BUỘC ĐỂ XẾP HẠNG TẠI RUNTIME CHỈ LÀM NÀY !!! – Pierreten

1

tôi bổ sung thêm hai dòng này vào ứng dụng của tôi bên trong một lớp học được đặt tên theo các 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(); 
    } 

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

1

đặt điểm ngắt trên tập dữ liệu/datatable (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, hãy di chuột qua tập dữ liệu/dữ liệu nhấp chuột trên kính được hiển thị trong di chuột hình ảnh trong studio trực quan.

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

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

nó là gì? WriteIf (objStringBuilder.ToString()); – Kiquenet

Các vấn đề liên quan