Я следующий код в C# -SQL DataReader чтение непоследовательно
private void sendnotificationmail(string enqid)
{
try
{
connection.Open();
List<string> maillist = new List<string>();
string sql = "SELECT TrussLog.repmail, TrussLog.branchemail, TrussEnquiry.DesignerEmail FROM TrussLog FULL OUTER JOIN TrussEnquiry ON TrussLog.enquirynum = TrussEnquiry.Enquiry_ID where TrussEnquiry.Enquiry_ID = '" + enqid + "'";
SqlCommand cmd = new SqlCommand(sql);
SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
if (!string.IsNullOrEmpty(reader[0].ToString()))
{
maillist.Add(reader[0].ToString());
}
if (!string.IsNullOrEmpty(reader[1].ToString()))
{
maillist.Add(reader[1].ToString());
}
if (!string.IsNullOrEmpty(reader[2].ToString()))
{
maillist.Add(reader[2].ToString());
}
}
connection.Close();
if (result != DialogResult.Cancel)
{
processmail(maillist);
}
}
catch (Exception)
{
}
}
Я получаю значение переменной enqid из выпадающего списка на моем содержание Окна form.The из выпадающего списка извлекается из базы данных. При загрузке формы combobox отображает первый идентификатор запроса, полученный из базы данных. Когда я запускаю свою программу, считыватель данных пропускает цикл. Однако, если выбрать другой запрос в выпадающем списке, чтение данных работает правильно
Возможно, первое 'enquiryId' не дает никаких результатов. Вы используете текущий код, подверженный SQL Injection. Вместо этого используйте параметризованный запрос. –
первый запрос ID извлекается из базы данных – betty
Извлечен ли он с использованием того же запроса? –