c#数据表,删除添加的行
c#中的数据集存在一些问题,它表示sdf文件中数据库的结构和数据。 我正在用DB进行一些自动测试,所以我应该在表中添加一些行,执行测试并从表中删除添加的行 表架构:c#数据表,删除添加的行,c#,dataset,sdf,C#,Dataset,Sdf,c#中的数据集存在一些问题,它表示sdf文件中数据库的结构和数据。 我正在用DB进行一些自动测试,所以我应该在表中添加一些行,执行测试并从表中删除添加的行 表架构: Num - ID, autoincrementing, primary key Name - string Photo - Image (binary) 我的代码是: adapter.Fill(set); row1 = datatable.Rows.Add(null, "Name1", File.ReadAllBy
Num - ID, autoincrementing, primary key
Name - string
Photo - Image (binary)
我的代码是:
adapter.Fill(set);
row1 = datatable.Rows.Add(null, "Name1", File.ReadAllBytes(@"Images\photo1.jpg"));
row2 = datatable.Rows.Add(null, "Name2", File.ReadAllBytes(@"Images\photo2.jpg"));
adapter.Update(set);
... perfoming test...
adapter.Fill(set);
row1.Delete();
row2.Delete();
adapter.Update(set);
但添加的行仍在底部。我试过使用
datatable.Rows.Remove(row1);
datatable.Rows.Remove(row2);
但它不会导致这样的行异常,因为第1行和第2行中的“Num”值错误,这与DB中实际的自动递增值不同
提前谢谢。我想问题在这里:
row1 = datatable.Rows.Add(null, "Name1", File.ReadAllBytes(@"Images\photo1.jpg"));
尝试将您的陈述替换为:
int i = 0;
datatable.Rows.Add(i++, "Name1", File.ReadAllBytes(@"Images\photo1.jpg"));
datatable.Rows.Add(i++, "Name2", File.ReadAllBytes(@"Images\photo2.jpg"));
并用删除
datatable.Rows[i].Delete();
查看MSDN上的以下链接:
- 列表项
- 列表项
- 我自己找到了解决办法。
首先,我在DB中创建了一个SQL查询,它添加一行并返回一个new row的Num值:
INSERT INTO [Table] ([Name], [Photo]) VALUES (@Name, @Photo);
SELECT @@IDENTITY
我称之为“InsertAndReturnIdentificator”。然后我使用插入(使用这个新查询)和直接删除适配器中的行,而不使用数据集
private Nullable<decimal> row1;
private Nullable<decimal> row2;
row1 = adapter.InsertAndReturtIdentificator("Name1", File.ReadAllBytes(@"Images\Photo1.jpg")) as Nullable<decimal>;
row2 = adapter.InsertAndReturtIdentificator("Name2", File.ReadAllBytes(@"Images\Photo2.jpg")) as Nullable<decimal>;
... performing test ...
adapter.Delete(Decimal.ToInt32(row1.Value));
adapter.Delete(Decimal.ToInt32(row2.Value));
私有可空行1;
私有可空行2;
row1=适配器.InsertAndReturtIdentificator(“Name1”,File.ReadAllBytes(@“Images\Photo1.jpg”))可为空;
row2=适配器.InsertAndReturtIdentificator(“Name2”,File.ReadAllBytes(@“Images\Photo2.jpg”))可为空;
... 正在执行测试。。。
Delete(Decimal.ToInt32(row1.Value));
Delete(Decimal.ToInt32(row2.Value));
我不确定,但我认为datatable.AcceptChanges方法可以在这里用于从datatable.write datatable.AcceptChanges()中删除删除的行;删除行后,请尝试datatable.AcceptChanges();将行添加到DataTable后,若数据库中已有具有“0”或“1”Num字段值的行,则会出现错误。所以我不能这样做。