高分解决OleDbCommandBuilder更新数据问题

wf20032723 2009-03-29 11:31:43
我写了个程序,用的OleDbCommandBuilder来更新数据,代码如下:
private void FormMain_Load(object sender, EventArgs e)
{
string file_name = Application.StarupPath + @"\test.mdb"; //本地数据库在bin里面
string password = "123";
string ConnectionString = string.Format("Provider=Microsoft.JET.OLEDB.4.0;Data Source='{0}';Persist Sercurity Info=false; JET OLEDB:Database Password={1}", file_name, password);
conn = new OleDbConnection(ConnectionString);
string sql = "SELECT * FROM test";//test为表名
da = new OleDbDataAdapter(sql, conn);
ds = new DataSet();
da.Fill(ds);
cb = new OleDbCommandBuilder(da);
}
private void btnImport_Click(object sender,EventArgs e) //更新数据库
{
DataTable dt = this.dataset1.Tables[0]; //dataset1是我新设立的一个DataSet,取的是excel里面的数据
for (int i = 0; i < dt.Rows.Count; i++)
{
ds.Tables[0].Rows.Add(dt.Rows[i].ItemArray);
Application.DoEvents();
}
da.Update(ds);//在此处更新数据
MessageBox.Show("提示操作成功。");
}
//用上面的代码,在数据库里面没数据的时候,更新很快,运行成功
但是数据库里面有数据的时候,我添加了一条语句
ds.Clear();在for循环的前面
for (int i = 0; i < dt.Rows.Count; i++)
{
ds.Tables[0].Rows.Add(dt.Rows[i].ItemArray);
Application.DoEvents();
}
da.Update(ds);//在此处更新数据
MessageBox.Show("提示操作成功。");
然后运行,就会报错,说数据库重复主键不能更新成功,
请问下各位高手,这是怎么回事,
...全文
155 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mqfwjp 2009-03-29
  • 打赏
  • 举报
回复
把主键列设为自动增长的就没问题了,插入的时候不插入主键字段,只插入其他的字段
wf20032723 2009-03-29
  • 打赏
  • 举报
回复
我的意思是:我有一个数据库,在里面没有数据的时候,用以上代码就可以插入数据,但是如果里面有数据,我想把里面的数据更改一部分,做更新,而不是先删除数据库里面的数据,在插入,
比如我数据库里面的数据为:
索引 一月 2月 3月 4月
1 12 0 0 0
2 36 0 0 0
然后到2月,我想把数据库变成这样:
索引 一月 2月 3月 4月
1 12 21 0 0
2 36 34 0 0
我想用OleDbCommandBuilder更新数据,应该怎么做,最好是能给点简单代码,谢谢了
uncleson88 2009-03-29
  • 打赏
  • 举报
回复
应该是主键的问题,如果你用的是标识列作主键的话,肯定是行不通的;如果不是的话,也应该判断一下是否有重复主键,再根据情况删除或修改该行
liuliyong106 2009-03-29
  • 打赏
  • 举报
回复
看看数据是不是发生冲突了
你只是晴空了DataSet
没有清空原文件的数据
PandaIT 2009-03-29
  • 打赏
  • 举报
回复
检查你插入的数据

是否跟数据库里面的主键冲突``
lchh0917 2009-03-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mqfwjp 的回复:]
把主键列设为自动增长的就没问题了,插入的时候不插入主键字段,只插入其他的字段
[/Quote]
顶~
wf20032723 2009-03-29
  • 打赏
  • 举报
回复
哦,好的,我试试

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧