У меня есть база данных SQL Server в C# [она была создана до того, как я добрался до моей нынешней работы, создатель ушел], и все было нормально до последней недели. На первой странице clerk_search.aspx
он ищет SQL Server для людей и отправляет обратно в datagrid, это нормально.Неверная попытка чтения данных, когда данных нет
Нажав кнопку ASP Image
, она перейдет на следующую страницу, чтобы указать причину, по которой клиенты посещают загруженные поля о клиенте, которые отправляют обратно. Для некоторых людей следующая страница заполняется, а для других - нет. Используемый SQL-запрос отлично проверяет в анализаторе запросов, я не понимаю. Я не думаю, что его читатель, потому что другие зарегистрированы в порядке, а другие клиенты присутствуют в строках в SQL и могут быть запрошены просто отлично. Все опубликовано ниже, я не разбираюсь в кодировании, пожалуйста, помогите.
System.InvalidOperationException: Неверная попытка прочитать, когда данных нет.
SqlDataReader reader2 = cmd.ExecuteReader();
reader2.Read();[InvalidOperationException: Invalid попытка чтения, когда нет данных нет.]
Вот фактический: .... clerk_create.aspx.cs
public partial class clerk_create : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Cookies["us"] == null)
{
Response.Write("Sorry, you do not have access to this page. Please see
data systems.");
Response.End();
}
if (!IsPostBack)
{
using (SqlConnection connection = new SqlConnection
(WebConfigurationManager.ConnectionStrings["walkin2"].ConnectionString))
{
TextBox txtsct = (TextBox)Page.PreviousPage.FindControl("Txtsct");
Txtsct.Text = txtsct.Text;
TextBox txt = (TextBox)Page.PreviousPage.FindControl("Txtssn");
Txtssn.Text = "" + txt.Text;
connection.Open();
string strsql2 = "SELECT dbo.table_name.SSN,
dbo.table_name.LAST_NAME,
dbo.table_name.FIRST_NAME, dbo.table_name.MIDDLE_INITIAL,
dbo.table_name.COMPONENT_CODE, dbo.table_name.PRESENT_CODE FROM
dbo.table_name INNER JOIN dbo.table_name ON dbo.table_name.SSN = '" +
Txtssn.Text + "')";
SqlCommand cmd = new SqlCommand(strsql2, connection);
SqlDataReader reader2 = cmd.ExecuteReader();
reader2.Read();
LblLName.Text = "" + reader2["LAST_NAME"];
LblFName.Text = "" + reader2["FIRST_NAME"];
}
}
}
...
}
Может быть целый ряд вещей, но нет 'using' построить вокруг читателя, чтобы убедиться, что он правильно расположен. – Arran
Метод '.Read()' возвращает bool - ** true **, если есть данные, которые читаются и могут быть доступны, ** false **, если не было данных (что может быть полностью выполнено при поиске - правильно?). Вы должны это проверить! 'if (reader2.Read()) {......}' –
В этом коде есть всевозможные ошибки. – Romoku