karakurt2
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Можно ли использовать в ADO.NET параметризованный запрос select, который выбирает значение, соответствующее ключевому полю таблицы? Например, вот так: Код: Component[] component = new Component[] { new Component() { name="METHANE", frac=98.251}, // 1. CH4 98.251 new Component() { name="ETHANE", frac=0.105}, // 2. C2H6 0.105 new Component() { name="PROPANE", frac=0.024}, // 3. C3H8 0.024 new Component() { name="ISOBUTANE", frac=0.008}, // 4. iC4H10 0.008 new Component() { name="N-BUTANE", frac=0.019}, // 5. nC4H10 0.019 new Component() { name="CARBON DIOXIDE", frac=0.301}, // 6. CO2 0.301 new Component() { name="NITROGEN", frac=1.2}, // 7. N2 1.200 new Component() { name="HELIUM-4", frac=0.016}, // 8. He 0.016 new Component() { name="HYDROGEN", frac=0.057}, // 9. H2 0.057 new Component() { name="ARGON", frac=0.019} // 10. Ar 0.019 }; conn.Open(); for (int i = 0; i < component.Length; ++i) { SqlCommand cmd = new SqlCommand("select mm from substance where name='" +component[i].name+"'", conn); float mm = (float) cmd.ExecuteScalar(); Console.WriteLine(component[i].name + " " + mm); } | А хотелось бы использовать параметризованный запрос для этой же цели, но получаю в ответ null: Код: Component[] component = new Component[] { new Component() { name="METHANE", frac=98.251}, // 1. CH4 98.251 new Component() { name="ETHANE", frac=0.105}, // 2. C2H6 0.105 new Component() { name="PROPANE", frac=0.024}, // 3. C3H8 0.024 new Component() { name="ISOBUTANE", frac=0.008}, // 4. iC4H10 0.008 new Component() { name="N-BUTANE", frac=0.019}, // 5. nC4H10 0.019 new Component() { name="CARBON DIOXIDE", frac=0.301}, // 6. CO2 0.301 new Component() { name="NITROGEN", frac=1.2}, // 7. N2 1.200 new Component() { name="HELIUM-4", frac=0.016}, // 8. He 0.016 new Component() { name="HYDROGEN", frac=0.057}, // 9. H2 0.057 new Component() { name="ARGON", frac=0.019} // 10. Ar 0.019 }; conn.Open(); SqlCommand cmd = new SqlCommand("select mm from substance where name='@Param'", conn); cmd.Parameters.Add("@Param", SqlDbType.NChar); for (int i = 0; i < component.Length; ++i) { cmd.Parameters["@Param"].Value = component[i].name; float mm = (float) cmd.ExecuteScalar(); // <== Здесь возвращается null!!! Console.WriteLine(component[i].name + " " + mm); } |
| Всего записей: 733 | Зарегистр. 06-12-2003 | Отправлено: 18:21 21-03-2010 | Исправлено: karakurt2, 18:24 21-03-2010 |
|