Rajaa Khalifeh Ответов: 1

Получить все значения столбца 1 в различных базах данных, SQL и отображать в метке ASP.NET с#


Я пытаюсь получить значения из базы данных и отобразить их в метке, но проблема в том, что я получаю только последнее вставленное значение, которое мне нужно, чтобы отобразить все значения для каждого идентификатора..

Что я уже пробовал:

protected void getdata() {



       SqlConnection con = new SqlConnection(GetConnectionString());
       con.Open();
       SqlCommand cmd = new SqlCommand("SELECT Paid FROM Pay where StdId='" + editstdlbl.Text + "'", con);

       SqlDataReader reader = cmd.ExecuteReader();


       reader.Read();


       payment.Text = reader["Paid"].ToString();

       reader.Close();
       con.Close();


   }

1 Ответов

Рейтинг:
1

MadMyche

Существует несколько проблем с вашим кодом.

Прежде всего, ваш код имеет Уязвимость SQL-инъекции.
Вы должны NEVER EVER создайте запрос, объединив команды и переменные вместе. правильная вещь, чтобы сделать это, чтобы использовать Параметр SQL[^] коллекция для добавления переменных в команду.
Этот кусок кода должен выглядеть примерно так

SqlCommand cmd = new SqlCommand("SELECT Paid FROM Pay WHERE StdId=@StdId", con);
cmd.Parameters.AddWithValue("@StdId", editstdlbl.Text);
Вторая часть-это то, ради чего вы пришли сюда; вы получаете только последнюю ценность. Ну, проблема в том, что вы читаете только одно значение; и то, что вам нужно сделать, это пройти через все значения.
Как правило, это делается с помощью WHILE блок, использующий значение из Читатель.Читать() в качестве условия
while (reader.Read()) {
	// get values and assign to variables
}
Но в вашем случае; каждый раз, когда запись продвигается, все, что вы собираетесь сделать, это перезаписать значение, которое вы установили на предыдущей записи.

К сожалению, Ваш вопрос не содержит достаточно подробных сведений о том, что вы на самом деле пытаетесь сделать с этой информацией, поэтому я не могу сказать вам, какими будут ваши следующие шаги, чтобы добраться туда, куда вы хотите пойти.
У меня есть идеи о том, что вы можете хотеть, некоторые из которых ведут вас по правильному пути, а другие-по неправильному.

Рекомендации:
MS Docs => класс SqlParameter[^]
MS Docs => класс SqlDataReader[^]


Jassom

Спасибо за ясное объяснение.

Rajaa Khalifeh

большое спасибо за ваш ответ, моя идея заключается в том, что платный столбец в базе данных имеет более 1 значения, поэтому мне нужно получить все значения для этого идентификатора и заменить их в метке, так что через некоторое время что я могу сделать

MadMyche

Вы хотите, чтобы все эти значения сложились вместе (сумма)?

Rajaa Khalifeh

да , мне нужно получить все эти значения для конкретного идентификатора и добавить их, чтобы собрать, и я очень благодарен вам за помощь, дорогая..

MadMyche

SELECT Sum(Paid) FROM Pay WHERE StdId = @StdId

Rajaa Khalifeh

извините за вопрос но когда я использую сумму в запросе в этой строке произошла ошибка:

оплата.Text = reader["платный"].ToString();// имя столбца ошибки,,,

MadMyche

Поскольку возвращается только одно значение, SqlDataReader можно пропустить:
payment.Text = cmd.ExecuteScalar().ToString();

Rajaa Khalifeh

хорошо спасибо это работает но извините у меня есть еще один вопрос если вы можете мне помочь,
мне нужно удалить последнюю строку в sql я попробовал это сделать
SqlCommand cmd2 = new SqlCommand("удалить из Pay WHERE PayId = @id ORDER BY PayId DESC LIMIT 1", con);
cmd2.параметры.AddWithValue("@id", PayId.Текст);
cmd2.ExecuteNonQuery();// ошибка здесь (неправильный синтаксис рядом с ключевым словом 'order'.

MadMyche

Нет порядка или ограничения на DELETE запрос

Rajaa Khalifeh

и как я могу удалить только последнюю строку для идентификатора, или я не могу этого сделать ?