VB执行SQL语句耗时太久导致程序假死怎么处理

 我来答
优就业张老师
2017-06-19 · TA获得超过1036个赞
知道小有建树答主
回答量:441
采纳率:88%
帮助的人:92.9万
展开全部

不管是用存储过程还是直接用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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式