单片机与PC串行通信,VB上位机界面,VB运行一段时间后就提示实时错误28    堆栈空间溢出,是什么原因。
提示在红色字一行出错。
 Dim rsJin As New ADODB.Recordset
    If rsJin.State Then rsJin.Close
    rsJin.Open "select top 1 * from 数据保存", dbconn, adOpenKeyset, adLockPessimistic
    rsJin.AddNew
    rsJin.Fields("日期") = Date
    rsJin.Fields("时间") = Time
    rsJin.Fields("传感器1") = filedata3(num)
    rsJin.Fields("传感器4") = filedata6(num)
    rsJin.Fields("传感器2") = filedata5(num)
    rsJin.Fields("传感器3") = filedata4(num)
    rsJin.Fields("alpha") = filedata1(num)
    rsJin.Fields("beta") = filedata2(num)
    rsJin.Update
    Dim rs1 As New ADODB.Recordset
    If rs1.State Then rs1.Close ''监视距离现在最近的60条记录,并把状态显示在图表中,如果进数据库的间隔是1秒的话,说明就是最近60秒内的数据
    rs1.Open "select top 30 * from 数据保存 order by 时间 desc", dbconn, adOpenKeyset, adLockPessimistic   num = num + 1

解决方案 »

  1.   

    看你的代码也不全,但是注意到一个细节.
    rsJin 是当场定义的,然后添加一个记录. 也没有看到关闭的代码
    然而你这记录貌似是一直在添加的.
    如果有成千上万新记录要添加, 岂非也要定义和打开这么多次? 效率底下
    其次, 既然rsJin 是当场定义的If rsJin.State Then rsJin.Close这一句就是脱裤子放屁.建议你把rsJin定义成全局的, 程序开始的时候就打开, 然后每次往里添加记录即可, 程序结束时关闭这就好像你要往抽屉里放好多东西, 根本不必每次都拉开抽屉,然后放一件东西,再关上抽屉, 然后再打开抽屉,再放一样...... 这样看着就很累.