Ravindran12 Ответов: 1

Как сохранить эти данные в БД


У меня есть сомнения. У меня есть 2 текстовых поля. 1-е текстовое поле я уже установил значение, а 2-е текстовое поле, пользователю нужно ввести значение (int) и есть кнопка для сохранения.

Я хочу, чтобы фиксированное значение и введенное значение были сохранены в БД. Как же так? возможно ли это ? Я хочу, чтобы введенное значение было сохранено в столбце "Значение", а фиксированное значение-в столбце "местоположение"

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

SqlCommand cmd2= new SqlCommand("Insert into LAB_SH_LINE values(@sid,@Location,@Items,@Value,)", con);
cmd2.Parameters.AddWithValue("sid", sid);

Richard MacCutchan

Вы ссылаетесь на четыре параметра в своей команде INSERT, но добавляете "sid", а не "@sid". Где находится остальная часть кода и в чем именно заключается проблема?

1 Ответов

Рейтинг:
7

OriginalGriff

Во - первых, никогда не делайте "анонимных вставок" - всегда перечисляйте столбцы, которые вы хотите вставить, в том порядке, в котором вы хотите их вставить:

INSERT INTO MyTable (MyColumn1, MyCOlumns2) VALUES (@ValueForColumn1, @ValueForColumn2)


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

В-третьих, вам нужно указать значение для каждого из параметров в операторе INSERT: в моем примере выше есть два значения параметров (префикс "@" указывает значение параметра для SQL), поэтому мне понадобятся два вызова AddWithValue поставлять им:
using (SqlConnection con = new SqlConnection(strConnect))
    {
    con.Open();
    using (SqlCommand cmd = new SqlCommand("INSERT INTO myTable (myColumn1, myColumn2) VALUES (@C1, @C2)", con))
        {
        cmd.Parameters.AddWithValue("@C1", myValueForColumn1);
        cmd.Parameters.AddWithValue("@C2", myValueForColumn2);
        cmd.ExecuteNonQuery();
        }
    }
Вы предоставляете только один в своем примере, но вы говорите ему ожидать 4 v alues.

В-четвертых, имена параметров должны совпадать в AddWithValue вызов и оператор INSERT: в вашем вызове отсутствует префикс"@".

В-пятых, SQL использует запятые в качестве разделителей, а не Терминаторов: (@C1, @C2) это прекрасно, но (@C1, @C2,) это синтаксическая ошибка, так как между последней запятой и закрытой скобкой нет ничего.