Короче говоря, C # выдает мне сообщение «Генерация динамического SQL для UpdateCommand не поддерживается для SelectCommand, которая не возвращает никакой информации о столбце ключа», в то время как в рассматриваемой таблице есть первичный ключ (Identity, поскольку он MSSQL).
Мой код выглядит следующим образом:
void loaddata()
{
try
{
DS = new DataSet();
sqladapt = new SqlDataAdapter("SELECT servicetag,name,defect,primkey FROM " + Properties.Settings.Default.DBtableLaptops + "", sqlcon);
sqladapt.FillSchema(DS, SchemaType.Source);
sqladapt.Fill(DS);
commandBuilder = new SqlCommandBuilder(sqladapt);
DT = DS.Tables[0];
Laptops_datagridview.DataSource = DT; //I'm using a datagridview to edit the data.
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
void savedata()
{
//Doesn't work yet.
try
{
sqladapt.Update(DS); // <-- Throws the aforementioned error.
sqladapt.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Загрузка данных и т. Д. Работает нормально, добавление новых строк также работает и сохраняет его.Но всякий раз, когда я обновляю или удаляю строку, выдается ошибка.Primkey - это мой первичный ключ, это целочисленное значение с автоинкрементом.
Я весь день гуглюл, но безрезультатно, что обычная проблема заключается в том, что первичный ключ не определен в первую очередь,но это не тот случай.
Любая информация будет принята с благодарностью, я уже 6 часов отлаживаю дробовик.
РЕДАКТИРОВАТЬ: операторы создания для рассматриваемой таблицы выглядят следующим образом:
CREATE TABLE [dbo].[laptopregistratieDB_laptops](
[Servicetag] [text] NOT NULL,
[Name] [text] NOT NULL,
[Defect] [bit] NOT NULL,
[primkey] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]