请教将datatable值提交到数据库时候遇到的问题?[: )]

时间:2022-10-13 17:18:27
页面上有一个DATAGRID,读取一个名为dt2的DATATABLE值显示出来.
#######################################################################################################
按下“总提交”按钮,将DATATABLE中增加的数据行插入到数据库表格中,SQL语句正确:

  For i = 0 To dt2.Rows.Count - 1 '循环遍历整个DATATABLE(dt2)

   If dt2.Rows(i).RowState = DataRowState.Added Then  '如果dt2中的某行是新增行,
                                                      '则执行具体的SQL语句,将该行的值插入数据库表格中
   End If

 Next
#######################################################################################################
#######################################################################################################
菜鸟我这样做了以后,
发现每次运行的时候,程序总是会把DATATABLE的第0行插入数据库,而不是判断dt2.Rows(i).RowState = DataRowState.Added 
这样一来造成了重复键值插入数据库(里面有主键),系统报错停止提交数据,
所以造成了本菜鸟一连数周通宵卡在这个问题上,苦不堪言.

我不明白为什么这个IF语句会形同虚设,明明是判断了dt2.Rows(i).RowState = DataRowState.Added的嘛
那些已经存在于DATATABLE中的老的DATAROW应该被系统自动略过才对啊
为什么会出现重复键插入数据库出错问题,小弟想不通.
有什么办法能避免重复键值插入数据库呢????(或者有什么办法能够做判断,筛选呢)
(系统是VS2003,ASP.NET,语言是VB.NET)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
PS:
小弟的单位里,负责技术的家伙很保守,丝毫不肯透露.
单位并非正规软件企业,丝毫没有规划,员工们各自为阵,毫无团队可言.
我们单位为了省钱也不组织我们培训,我们到现在为止所有的项目都是以比一般公司多5倍的时间老牛拉慢车磨出来的,还要漫无目的地翻无数网页寻找教程,
陷入进度的泥潭可以说是地狱般的苦,同时仿佛是对人的智商的无情的嘲弄!!
菜鸟小弟在这环境郁闷得快爆炸了,恳请各位朋友们的帮助,谢谢!!

7 个解决方案

#1


希望得到各位朋友们的帮助:)
在这种毫无团队合作可言的公司里,每天都受到任务进度陷入泥潭的打击
你要是稍微做得慢些,总部就会有人怀疑你能力不足,妈了个B的SB环境!!都是负责技术的那只保守SB害的!!
公司里其他员工素质不错,之所以我们程序员会遭遇这种SB环境,原因就是负责技术的那只保守SB,
这SB只教他喜欢的一个女生,别人问他芝麻大的P事,就会遭到恶毒言语攻击,嘲讽你那么简单的东西也做不来.
小弟真是经常要把眼泪往肚子里咽,这个苦,甚至叫你哭不出来!
要是神经脆弱些的人,早就疯掉了!!

#2


没有用过这种方式的更新数据库

我都是直接生成sql
用一个泛型数组,添加sql
然后用事务执行这个Sql数组

至于工作,如果真是压力这么大,可以换一个公司,没必要委屈自己的。

#3


不懂vb,不知道比较 dt2.Rows(i).RowState = DataRowState.Added 是不是也需要“==”。

不过我一般都把id取出来,保存的时候判断id有值就更新,无值就新增。

#4


看来,负责技术的那位兄台叫“陆吟侃”

#5


是不是你操作DATASET的同时也更新了数据库?(绑定控件自带功能如GRIDVIEW)

#6


崇明岛,好向往的地方啊...

#7


我们单位代码规定死了几个函数,像连接数据库,都用统一的公共接口,输入SQL串,得到更改后的行数等等,像DATASET之类的操作都是违规的,所以只能操作DATATABLE,还要一行一行写SQL,小弟苦啊[:(]

#1


希望得到各位朋友们的帮助:)
在这种毫无团队合作可言的公司里,每天都受到任务进度陷入泥潭的打击
你要是稍微做得慢些,总部就会有人怀疑你能力不足,妈了个B的SB环境!!都是负责技术的那只保守SB害的!!
公司里其他员工素质不错,之所以我们程序员会遭遇这种SB环境,原因就是负责技术的那只保守SB,
这SB只教他喜欢的一个女生,别人问他芝麻大的P事,就会遭到恶毒言语攻击,嘲讽你那么简单的东西也做不来.
小弟真是经常要把眼泪往肚子里咽,这个苦,甚至叫你哭不出来!
要是神经脆弱些的人,早就疯掉了!!

#2


没有用过这种方式的更新数据库

我都是直接生成sql
用一个泛型数组,添加sql
然后用事务执行这个Sql数组

至于工作,如果真是压力这么大,可以换一个公司,没必要委屈自己的。

#3


不懂vb,不知道比较 dt2.Rows(i).RowState = DataRowState.Added 是不是也需要“==”。

不过我一般都把id取出来,保存的时候判断id有值就更新,无值就新增。

#4


看来,负责技术的那位兄台叫“陆吟侃”

#5


是不是你操作DATASET的同时也更新了数据库?(绑定控件自带功能如GRIDVIEW)

#6


崇明岛,好向往的地方啊...

#7


我们单位代码规定死了几个函数,像连接数据库,都用统一的公共接口,输入SQL串,得到更改后的行数等等,像DATASET之类的操作都是违规的,所以只能操作DATATABLE,还要一行一行写SQL,小弟苦啊[:(]