Ответ 1
Вы должны определить InsertCommand для DataAdapter
http://www.codeproject.com/KB/database/relationaladonet.aspx
Я пытаюсь добавить новую строку в свою базу данных. Вот мой код:
ds1 - мой набор данных, da1 - мой адаптер данных
dRow = ds1.Tables["localitati"].NewRow();
dRow[1] = aux1.Replace(" ", "").Replace("-", "").ToLower();
dRow[2] = aux2.ToLower().Replace(" ", "");
dRow[3] = aux1;
dRow[4] = e.X;
dRow[5] = e.Y;
ds1.Tables["localitati"].Rows.Add(dRow);
da1.Update(ds1, "localitati");
в da1.update(ds1,"localitati");
программа останавливается и дает мне ошибку: "Update requires a valid InsertCommand when passed DataRow collection with new rows
."
Соединение с базой данных работает (я получил информацию из db)
Любые идеи?
Вы должны определить InsertCommand для DataAdapter
http://www.codeproject.com/KB/database/relationaladonet.aspx
Quesion Solved, ваш вопрос:
dRow = ds1.Tables["localitati"].NewRow();
dRow[1] = aux1.Replace(" ", "").Replace("-", "").ToLower();
dRow[2] = aux2.ToLower().Replace(" ", "");
dRow[3] = aux1;
dRow[4] = e.X;
dRow[5] = e.Y;
ds1.Tables["localitati"].Rows.Add(dRow);
da1.Update(ds1, "localitati");
Ответ:
вы должны использовать commandBuilder. Это до вашего обновления с использованием dataAdapter (или до создания dataRow). Добавьте код:
SqlCommandBuilder cmdb = new SqlCommandBuilder(da);
Для добавления DataRows:
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
// add rows to dataset
builder.GetInsertCommand();
//Without the SqlCommandBuilder this line would fail
adapter.Update(dataSet);
Пояснение:
adapter.Update(dataset)
попытается сохранить изменения в dataset
в базе данных. Это потребует:
DataRows
)DataRows
были удалены)DataRows
были изменены)Вы можете поместить контрольную точку для проверки вашего adapter.InsertCommand
до строки adapter.Update()
, чтобы увидеть, установлен ли он.
Чтобы установить их, просто создайте SqlCommandBuilder
и огонь GetInsertCommand()
, GetDeleteCommand()
и т.д.
Это должно решить ошибки:
Подробнее см. Ссылка MSDN для получения дополнительной информации