SQL DataReader останавливается, но без ошибок - PullRequest
0 голосов
/ 01 августа 2011

Система:
SQL Server 2008
Win Server 2008
ASP.NET 4.0

Я запрашиваю набор данных, используя только клиентские данные, имя клиента и SSN.Теперь о странной части.Одно из значений в поле SSN заставляет SQLDataReader прекратить зацикливание.Ошибка не выдается;выполнение всего кода после цикла DR продолжается.Я нашел SSN контакта, который вызывает проблему, но SQL-запрос говорит, что он пустой (не пустой, но пустой).

Я пытался заключить dr["SSN"].ToString() в попытку / улов, но то же самоеслучается.Нет ошибки, но цикл while завершен, и выполнение кода продолжается.Очень странно то, что оператор SB.append чуть ниже закрытия цикла не выполняется, но SB.ToString() чуть ниже этого выполняет.

Вот пример, который, надеюсь, лучше объяснить.

SB = new StringBuilder();
o = "";

SB.Append("<table>\n");
SB.Append("<tr>\n");
SB.Append("<td>Account Number</td>\n");
SB.Append("<td>Name On Account</td>\n");
SB.Append("<td>SSN</td>\n");
SB.Append("</tr>\n");

while (dr.Read()) {
SB.Append("<tr>\n");
SB.Append("<td>" + dr["AccountID"].ToString() + "</td>\n");
SB.Append("<td>" + dr["Name"].ToString() + "</td>\n");
// This ssn below will execute until that one odd record.
// once the odd ssn column is accessed then the dr.read stops. No error.
SB.Append("<td>" + dr["SSN"].ToString() + "</td>\n");
SB.Append("</tr>\n");
}

SB.Append("</table>\n\n");// <-- this will not execute after odd ssn.
o = SB.ToString();// <-- this will execute after odd ssn.
ctx.Response.Write(o); //<-- this will execute after odd ssn.
SB = null;// <-- this will execute after odd ssn.
...