VB执行SQL语句耗时太久导致程序假死怎么处理
1个回答
展开全部
不管是用存储过程还是直接用SQL语句,大数据量操作都会造成假死,可以尝试以下思路:
将一次性执行分成多次执行,比如全表替换,为了较好的用户体验,可以逐行替换,然后在循环里加DoEvents配合显示一个进度条。
或者,使用VB多线程技术(如ActiveX EXE)异步执行,主线程循环中加DoEvents等待执行数据操作的线程结束的信息。
或者,使用SQL SERVER 2005以上版本支持的Service Broker,构建一个异步信息,在信息接收端执行数据操作,具体步骤可GOOGLE网站的SQL SERVER异步触发器。
附:
异步执行就不会假死了,不过执行未完时最好不要作对这个过程有影响的操作.
Private WithEvents Css As ADODB.Connection
'''''''
Css.Execute "update table1 set a='x',b='y' ", , adAsyncExecute
Private Sub css_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
On Error GoTo EE
MsgBox "更新完毕."
Css.Close:Set Css = Nothing
Exit Sub
EE:
Set Css = Nothing
End Sub
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询