тест команда ([
здесь) имеет "не" логический оператор, который является восклицательным знаком (подобный многим другим языкам). Попробуйте это:
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Если установлена точка останова, после заполнения DataTable или DataSet вы увидите увеличительное стекло, если наведете курсор на переменную. Если вы нажмете на нее, появится визуализатор DataTable, о котором вы можете прочитать здесь .
На этом изображении вы видите ниже, dt - это моя переменная DataTable, и точка останова была достигнута на несколько строк. ниже, позволяя мне навести указатель мыши на это значение. Использование Visual Studio 2008.
Визуализатор DataTable ( кредит изображения ):
I added two lines into my app inside a class named after the outermost class:
public MyClass()
{
// The following (2) lines are used for testing only. Remove comments to debug.
System.Diagnostics.Debugger.Launch();
System.Diagnostics.Debugger.Break();
}
This should stop the app and bring it up in debug mode. Then you can step through it and look at the values in your objects as you hover over them.
установите точку останова в наборе данных / таблице данных (сочетание клавиш f9 для точки останова) и запустите приложение (клавиша быстрого доступа f5). Когда точка останова появится, наведите указатель мыши на набор данных / базу данных, нажмите на стекло показано на изображении при наведении курсора в Visual Studio.
Примечание: проверьте, что компиляция debug = "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();
}