C#把datatable的数据插入数据库怎么出现了重复数据

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:44:05
DataTable dt = new DataTable();
Book _o = new Book();
for (int i = 0; i < dt.Rows.Count; i++)
{
_o.BookName = dt.Rows[i]["bookName"].ToString();
_o.BookID = dt.Rows[i]["bookID"].ToString();
InsertBookSpeakFor(_o);
}

DataTable 里有3行数据,如
编号 书名
1 书本1
2 书本2
3 书本3

Book是书本属性
有BookName和BookID两个属性

InsertBookSpeakFor();
是执行插入的方法

插入数据后,出现一下数据
1 书本1
1 书本1
2 书本2
1 书本1
2 书本2
3 书本3

请问怎么使插入不重复,
注:InsertBookSpeakFor()里绝对没有写循环
把Book _o = new Book();
放在for循环里一样不行!

你这样的插入的数据就只有 3 书本3 这最后一条

3楼啊我试过了还是一样的啊

DataTable dt = new DataTable();
Book _o = new Book();
for (int i = 0; i < dt.Rows.Count; i++)
{
_o.BookName = dt.Rows[i]["bookName"].ToString();
_o.BookID = dt.Rows[i]["bookID"].ToString();
}
InsertBookSpeakFor(_o); // 醒目

你在InsertBookSpeakFor里写循环了吧。

RE:问题补充
你照着我给的代码试过没?

InsertBookSpeakFor(_o);
,Book加一个构造函数,给属性赋值。把这个方法里的参数改一下
string name = dt[i]...
string id = dt[i]...
InsertBookSpeakFor(new Book(name,id))

老大你应该把Book _o = new Book(); 写在循环里面,像这样
for (int i = 0; i < dt.Rows.Count; i++)
{
Book _o = new Book();
_o.BookName = dt.Rows[i]["bookName"].ToString();
_o.BookID = dt.Rows[i]["bookID"].ToString();
InsertBookSpeakFor(_o);
}
你试试呢?

你需要贴出book类和InsertBookSpeakFor的定义,给出的代码肯定没问题的
你可以用断点断在循环里面看看,不过意义不大应该

你帖出来的代码应该没问题的,问题都是些不注意的小细节。。是不是你原来的datatable的数据源跟插入的table是同一个表?那样