webentwicklung-frage-antwort-db.com.de

Anzeigen einer DataTable beim Debuggen

Ich fange gerade erst mit ADO.NET und DataSets und DataTables an. Ein Problem, das ich habe, ist, dass es ziemlich schwer zu erkennen ist, welche Werte in der Datentabelle beim Debuggen vorhanden sind.

Was sind einige der einfachsten Methoden, um schnell zu sehen, welche Werte in einer DataTable gespeichert wurden? Gibt es eine Möglichkeit, den Inhalt in Visual Studio während des Debuggens zu sehen, oder ist dies die einzige Möglichkeit, die Daten in eine Datei zu schreiben?

Ich habe eine kleine Dienstprogrammfunktion erstellt, die eine DataTable in eine CSV-Datei schreibt. Die entstandene CSV-Datei wurde jedoch abgeschnitten. Ungefähr 3 Zeilen von der letzten Zeile, in der ein System.Guid geschrieben werden sollte, stoppt die Datei einfach. Ich kann nicht feststellen, ob dies ein Problem mit meiner CSV-Konvertierungsmethode oder der ursprünglichen Population der DataTable ist.

Update

Vergiss den letzten Teil, den ich gerade vergessen habe, meinen Stream-Writer zu leeren.

73
Eric Anastas

Wenn ein Haltepunkt gesetzt ist, nachdem die DataTable oder das DataSet gefüllt wurde, können Sie eine Lupe sehen, wenn Sie mit der Maus über die Variable fahren. Wenn Sie darauf klicken, wird der DataTable Visualizer aufgerufen, den Sie über hier lesen können.

In diesem Bild sehen Sie unten, dt ist meine DataTable-Variable und der Haltepunkt wurde einige Zeilen darunter getroffen, sodass ich über diesen Wert schweben kann. Verwenden von Visual Studio 2008.

alt text

DataTable Visualizer ( Bildnachweis ):
alt text

177
RSolberg

Ich fügte meiner App zwei Zeilen in einer Klasse hinzu, die nach der äußersten Klasse benannt wurde:

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

Dadurch sollte die App angehalten und im Debug-Modus angezeigt werden. Dann können Sie durchgehen und die Werte in Ihren Objekten betrachten, wenn Sie über sie schweben.

1
pave

setzen Sie den Haltepunkt auf dem Datensatz/Datum (f9-Tastenkombination für Haltepunkt) und führen Sie Ihre Anwendung aus (F5 ist der Schnellzugriffstaste) .

Hinweis: Überprüfen Sie die Kompilierung debug = "true" ist in der Web-Konfiguration "true". Else Visual Studio wird nicht für das Debugging verwendet.

1
anishMarokey
    /// <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
Yordan Georgiev