그래서 C# winForms의 목록 배열에 값을 저장하려고합니다. for 루프에서 sql statment를 만들면 모든 것이 잘 작동합니다. 메시지 상자는 매번 다른 약물 이름을 출력합니다.이상한 결과 C# winForms 배열 목록 배열
for (int i = 0; i < numberOfMeds; i++)
{
queryStr = "select * from biological where medication_name = '" + med_names[i] + "' and patient_id = " + patientID.patient_id;
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand(queryStr, conn))
{
conn.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
medObject.medication_date = (DateTime)rdr["patient_history_date_bio"];
medObject.medication_name = rdr["medication_name"].ToString();
medObject.medication_dose = Convert.ToInt32(rdr["medication_dose"]);
medsList[i].Add(medObject);
}
}
conn.Close();
MedicationTimelineClass medObjectx = medsList[i][0] as MedicationTimelineClass;
MessageBox.Show(medObjectx.medication_name);
}
}
나는이 목록의 배열이 채워되어있을 가능성을 의미 루프에서 메시지 상자 코드를 찍을 때하지만, 난 항상 같은 값을 얻을 : 마지막으로 입력 한 값입니다. 그 약의 이름은 상관 없어요. List의 전체 배열에 동일한 데이터가 채워지는 것과 같습니다.
for (int i = 0; i < numberOfMeds; i++)
{
queryStr = "select * from biological where medication_name = '" + med_names[i] + "' and patient_id = " + patientID.patient_id;
using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand(queryStr, conn))
{
conn.Open();
using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
medObject.medication_date = (DateTime)rdr["patient_history_date_bio"];
medObject.medication_name = rdr["medication_name"].ToString();
medObject.medication_dose = Convert.ToInt32(rdr["medication_dose"]);
medsList[i].Add(medObject);
}
}
conn.Close();
}
}
MedicationTimelineClass medObjectx = medsList[0][0] as MedicationTimelineClass;
MessageBox.Show(medObjectx.medication_name);
여기에 무슨 일이 벌어지고 있습니까?
이전 코드를 보여줘야합니다. 그 코드와 관련이있을 수 있습니다. –