Если я угадаю, что вы пытаетесь сделать, вы хотите сделать это:
Вы хотите добавить ОДИН параметр, и вам нужно изменить ЗНАЧЕНИЕ параметра в цикле.
var db2Cmd = new OdbcCommand("INSERT INTO presnlats (LAT) VALUES (@Lat)", db2Conn);
db2Cmd.Parameters.AddWithValue("@Lat", 0);
for (int j = 0; j < reader.FieldCount; ++j)
{
db2Cmd.Parameters["@Lat"].Value = reader[j];
Console.Out.WriteLine(db2Cmd.ExecuteNonQuery());
}
Добавлена
У вас есть только один заполнитель (@Lat) для вашего параметра
в команде, поэтому вы должны добавить только один параметр.
Ваш код добавляет новый параметр для каждого объекта в
читатель. Ни один из этих параметров не будет назван "@Lat", если только ваш читатель не возвращает значение @ Lat.
Я до сих пор уверен, что вам нужен один параметр (@Lat) и нужно изменить значение параметра в цикле.
Уточняя синтаксис использования параметризованных запросов, рассмотрим следующее утверждение:
cmd.CommandText = "Значения вставки в лицо (имя, фамилия) (@fName, @lName)
В приведенном выше утверждении @fName и @lName НЕ являются параметрами. Они являются заполнителями для параметров.
Затем необходимо явно добавить параметры, используя следующие правила:
- Параметры должны быть названы точно так же, как заполнители
- Символы должны быть добавлены в правильном порядке.
Так что более полный пример будет
cmd.CommandText = "Значения вставки в лицо (имя, фамилия) (@fName, @lName)
cmd.Parameters.AddWithValue ("@ fName", "David"); // Эта строка в этом контексте говорит: «Замените указатель параметра из предыдущей строки на этот фактический параметр.
cmd.Parameters.AddWithValue ("@ lName", "Stratton"); // аналогично, это заменяет заполнитель @lname.
Тогда, если у меня есть устройство чтения данных, которое имеет несколько имен, я могу повторно назначить ЗНАЧЕНИЕ от считывателя на ЗНАЧЕНИЕ параметра.
while (myReader.Read ())
{
cmd.Parameters ["@ fName ']. Value = myReader.GetString (" FirstNameField ");
cmd.Parameters ["@ lName ']. Value = myReader.GetString (" LastNameField ");
cmd.ExecuteNonQuery (); * * тысяча тридцать-восемь
}