如何实现多个数据全部录入后一次性提交到数据库?

时间:2022-10-13 17:32:44
有个数据输入页面,有一个数据输入框,和一个显示输入结果的datagrid,怎样才能实现把多个数据全部输入完后,点击提交按钮,才把数据保存到数据库?要求每输入一个数据,都能立即在datagrid中显示。目前的做法是输入一个数据提交一次,这样会导致网页刷新过多,影响输入速度。谢谢了。

27 个解决方案

#1


补充一下:如果有输入错误,还能及时修改。

#2


补充一下:如果有输入错误,还能及时修改。

#3


最后一次性提交到数据库不行吗,先把SQL语句存到数组里
开启事务,如果有插入错误可以回滚事务

#4


就是想最后一次性提交到数据库,可惜,不会。

#5


这是客户端技术的问题吧,js/jquery就可以解决

#6


引用 5 楼  的回复:
这是客户端技术的问题吧,js/jquery就可以解决



能不能详细说说?

#7


可以使用循环,将数据装入数组,一次性提交哦。

#8


你的Gridview中的数据放到临时Datatable中,点击提交按钮后。
在ADO数据处理时,先开启事物Transaction,然后循环遍历这个Datatable,
一条一条的插入,最后事物Transaction.commit。实际上只是连了一次数据库,页面也只提交了一次,循环插入的过程都是在事物中进行

#9


引用 4 楼  的回复:
就是想最后一次性提交到数据库,可惜,不会。

你会一次了怎么多次就不会了?
之前你是从数据输入框去数据存入数据库,现在就换成循环从gridview取数据存入数据库就是

#10


你的数据库是oracle的话,可以用事务,最后一起commit。

但是mysql不支持回滚,所以只好用js了。这个时候的交互是前台用户的action和grid之间了,最后将交互的结果插入数据库即可

#11


数据库是sql srver

#12


引用楼主  的回复:
有个数据输入页面,有一个数据输入框,和一个显示输入结果的datagrid,怎样才能实现把多个数据全部输入完后,点击提交按钮,才把数据保存到数据库?要求每输入一个数据,都能立即在datagrid中显示。目前的做法是输入一个数据提交一次,这样会导致网页刷新过多,影响输入速度。谢谢了。


放弃asp.net,改为javascript技术的DataGrid类库(如果你找得到好的类库的话)操作。

如果是开发企业应用,应该立刻转去silverlight开发。

#13


引用 8 楼  的回复:
你的Gridview中的数据放到临时Datatable中,点击提交按钮后。
在ADO数据处理时,先开启事物Transaction,然后循环遍历这个Datatable,
一条一条的插入,最后事物Transaction.commit。实际上只是连了一次数据库,页面也只提交了一次,循环插入的过程都是在事物中进行


晕死!就算是一个网站只有你一个人使用(别人都被挂起来等着你的所谓事务结束),也不可能这样奢侈啊。

#14


引用 12 楼  的回复:
引用楼主  的回复:
有个数据输入页面,有一个数据输入框,和一个显示输入结果的datagrid,怎样才能实现把多个数据全部输入完后,点击提交按钮,才把数据保存到数据库?要求每输入一个数据,都能立即在datagrid中显示。目前的做法是输入一个数据提交一次,这样会导致网页刷新过多,影响输入速度。谢谢了。


放弃asp.net,改为javascript技术的DataGrid类库(如果你找得到好的类库的话)操作。

如果是开发企业应用,应该立刻转去silverlight开发。



哦,是公司内部的业务管理系统,500用户左右。silverlight 不熟悉,能不能介绍一些入门资料?

#15


引用 13 楼  的回复:
引用 8 楼  的回复:
你的Gridview中的数据放到临时Datatable中,点击提交按钮后。
在ADO数据处理时,先开启事物Transaction,然后循环遍历这个Datatable,
一条一条的插入,最后事物Transaction.commit。实际上只是连了一次数据库,页面也只提交了一次,循环插入的过程都是在事物中进行


晕死!就算是一个网站只有你一个人使用(别人都被挂……


是啊,这样感觉还不如输入一行数据就提交一次

#16


你可以用做个隐藏文本,然后用js在table中加入<tr></tr>
所有提交的数据都放在隐藏文本,之后后台解析隐藏文本即可

#17


把它创建为一个对象,保存在Session然后再一次性存入数据库中。
http://www.cnblogs.com/insus/archive/2011/12/08/2281000.html

#18


引用 17 楼  的回复:
把它创建为一个对象,保存在Session然后再一次性存入数据库中。
http://www.cnblogs.com/insus/archive/2011/12/08/2281000.html


一次性插入,是用循环?

#19


- -这个玩意还是用银光或者flash去搞吧
纯html基本上就是在蹂躏自己

非要搞的话 存在cache里面 设置一个滑动过期
在过期的callback里面执行插入数据库操作
(嗯 祈祷你的内存是比较稳定的吧……)

#20


打开事务

循环更新 

捕捉异常回滚

关闭事务

#21


先验证,后存储

#22


额,一次性更新数据我一般是用dataadapter批量更新

#23


看需求吧:

1、临时数据存储于 html,客户端。js
2、临时数据存储于服务器 session或者临时表。ajax

无论使用什么存储临时数据,都有不同的解决方式。

#24


引用 19 楼  的回复:
- -这个玩意还是用银光或者flash去搞吧
纯html基本上就是在蹂躏自己

非要搞的话 存在cache里面 设置一个滑动过期
在过期的callback里面执行插入数据库操作
(嗯 祈祷你的内存是比较稳定的吧……)


怎么搞?有没有例子参考?

#25


引用 19 楼  的回复:
- -这个玩意还是用银光或者flash去搞吧
纯html基本上就是在蹂躏自己

非要搞的话 存在cache里面 设置一个滑动过期
在过期的callback里面执行插入数据库操作
(嗯 祈祷你的内存是比较稳定的吧……)


银光或flash怎么搞?有没有例子参考?

#26


我是把DATATABLE放到ViewState里面的

#27


建议JS/JQUERY操作,只是UI上做了更改,先把临时数据存于客户端HTML,提交的时候,后台取到这些值,数组的形式切割开来,然后循环插入到数据库中。。。

#1


补充一下:如果有输入错误,还能及时修改。

#2


补充一下:如果有输入错误,还能及时修改。

#3


最后一次性提交到数据库不行吗,先把SQL语句存到数组里
开启事务,如果有插入错误可以回滚事务

#4


就是想最后一次性提交到数据库,可惜,不会。

#5


这是客户端技术的问题吧,js/jquery就可以解决

#6


引用 5 楼  的回复:
这是客户端技术的问题吧,js/jquery就可以解决



能不能详细说说?

#7


可以使用循环,将数据装入数组,一次性提交哦。

#8


你的Gridview中的数据放到临时Datatable中,点击提交按钮后。
在ADO数据处理时,先开启事物Transaction,然后循环遍历这个Datatable,
一条一条的插入,最后事物Transaction.commit。实际上只是连了一次数据库,页面也只提交了一次,循环插入的过程都是在事物中进行

#9


引用 4 楼  的回复:
就是想最后一次性提交到数据库,可惜,不会。

你会一次了怎么多次就不会了?
之前你是从数据输入框去数据存入数据库,现在就换成循环从gridview取数据存入数据库就是

#10


你的数据库是oracle的话,可以用事务,最后一起commit。

但是mysql不支持回滚,所以只好用js了。这个时候的交互是前台用户的action和grid之间了,最后将交互的结果插入数据库即可

#11


数据库是sql srver

#12


引用楼主  的回复:
有个数据输入页面,有一个数据输入框,和一个显示输入结果的datagrid,怎样才能实现把多个数据全部输入完后,点击提交按钮,才把数据保存到数据库?要求每输入一个数据,都能立即在datagrid中显示。目前的做法是输入一个数据提交一次,这样会导致网页刷新过多,影响输入速度。谢谢了。


放弃asp.net,改为javascript技术的DataGrid类库(如果你找得到好的类库的话)操作。

如果是开发企业应用,应该立刻转去silverlight开发。

#13


引用 8 楼  的回复:
你的Gridview中的数据放到临时Datatable中,点击提交按钮后。
在ADO数据处理时,先开启事物Transaction,然后循环遍历这个Datatable,
一条一条的插入,最后事物Transaction.commit。实际上只是连了一次数据库,页面也只提交了一次,循环插入的过程都是在事物中进行


晕死!就算是一个网站只有你一个人使用(别人都被挂起来等着你的所谓事务结束),也不可能这样奢侈啊。

#14


引用 12 楼  的回复:
引用楼主  的回复:
有个数据输入页面,有一个数据输入框,和一个显示输入结果的datagrid,怎样才能实现把多个数据全部输入完后,点击提交按钮,才把数据保存到数据库?要求每输入一个数据,都能立即在datagrid中显示。目前的做法是输入一个数据提交一次,这样会导致网页刷新过多,影响输入速度。谢谢了。


放弃asp.net,改为javascript技术的DataGrid类库(如果你找得到好的类库的话)操作。

如果是开发企业应用,应该立刻转去silverlight开发。



哦,是公司内部的业务管理系统,500用户左右。silverlight 不熟悉,能不能介绍一些入门资料?

#15


引用 13 楼  的回复:
引用 8 楼  的回复:
你的Gridview中的数据放到临时Datatable中,点击提交按钮后。
在ADO数据处理时,先开启事物Transaction,然后循环遍历这个Datatable,
一条一条的插入,最后事物Transaction.commit。实际上只是连了一次数据库,页面也只提交了一次,循环插入的过程都是在事物中进行


晕死!就算是一个网站只有你一个人使用(别人都被挂……


是啊,这样感觉还不如输入一行数据就提交一次

#16


你可以用做个隐藏文本,然后用js在table中加入<tr></tr>
所有提交的数据都放在隐藏文本,之后后台解析隐藏文本即可

#17


把它创建为一个对象,保存在Session然后再一次性存入数据库中。
http://www.cnblogs.com/insus/archive/2011/12/08/2281000.html

#18


引用 17 楼  的回复:
把它创建为一个对象,保存在Session然后再一次性存入数据库中。
http://www.cnblogs.com/insus/archive/2011/12/08/2281000.html


一次性插入,是用循环?

#19


- -这个玩意还是用银光或者flash去搞吧
纯html基本上就是在蹂躏自己

非要搞的话 存在cache里面 设置一个滑动过期
在过期的callback里面执行插入数据库操作
(嗯 祈祷你的内存是比较稳定的吧……)

#20


打开事务

循环更新 

捕捉异常回滚

关闭事务

#21


先验证,后存储

#22


额,一次性更新数据我一般是用dataadapter批量更新

#23


看需求吧:

1、临时数据存储于 html,客户端。js
2、临时数据存储于服务器 session或者临时表。ajax

无论使用什么存储临时数据,都有不同的解决方式。

#24


引用 19 楼  的回复:
- -这个玩意还是用银光或者flash去搞吧
纯html基本上就是在蹂躏自己

非要搞的话 存在cache里面 设置一个滑动过期
在过期的callback里面执行插入数据库操作
(嗯 祈祷你的内存是比较稳定的吧……)


怎么搞?有没有例子参考?

#25


引用 19 楼  的回复:
- -这个玩意还是用银光或者flash去搞吧
纯html基本上就是在蹂躏自己

非要搞的话 存在cache里面 设置一个滑动过期
在过期的callback里面执行插入数据库操作
(嗯 祈祷你的内存是比较稳定的吧……)


银光或flash怎么搞?有没有例子参考?

#26


我是把DATATABLE放到ViewState里面的

#27


建议JS/JQUERY操作,只是UI上做了更改,先把临时数据存于客户端HTML,提交的时候,后台取到这些值,数组的形式切割开来,然后循环插入到数据库中。。。