gpt4 book ai didi

vb.net - VB.NET SQLite 查询中的 StackOverflow

转载 作者:行者123 更新时间:2023-12-03 17:18:36 26 4
gpt4 key购买 nike

我的一个数据库函数中有一个 StackOverflowException,我不知道如何处理。我有一个 SQLite 数据库,其中包含一个表“tblEmployees”,该表保存每个员工的记录(数千个帖子),通常这个函数运行没有任何问题。

但有时在函数被调用一千次后,它会在“ReturnTable.Load(reader)”行出现 StackOverflowException 并显示以下消息:System.Data.SQLite.dll 中发生了“System.StackOverflowException”类型的未处理异常

如果我重新启动应用程序,则继续使用上次崩溃的完全相同的帖子没有问题。我还可以在崩溃时从 SQLite Admin 进行完全相同的 DB 调用,而不会出现任何问题。

这是代码:

Public Function GetNextEmployeeInQueue() As String
Dim NextEmployeeInQueue As String = Nothing
Dim query As [String] = "SELECT FirstName FROM tblEmployees WHERE Checked=0 LIMIT 1;"
Try
Dim ReturnTable As New DataTable()
Dim mycommand As New SQLiteCommand(cnn)
mycommand.CommandText = query
Dim reader As SQLiteDataReader = mycommand.ExecuteReader()
ReturnTable.Load(reader)
reader.Close()
If ReturnTable.Rows.Count > 0 Then
NextEmployeeInQueue = ReturnTable.Rows(0)("FirstName").ToString()
Else
MsgBox("No more employees found in queue")
End If
Catch fail As Exception
MessageBox.Show("Error: " & fail.Message.ToString())
End Try
If NextEmployeeInQueue IsNot Nothing Then
Return NextEmployeeInQueue
Else
Return "No more records in queue"
End If
End Function

崩溃时,读卡器有“属性评估失败”。在所有值中。

我认为分配的内存存在一些问题,没有正确释放,但无法弄清楚它是什么对象。 DB 连接在创建 DB 类对象时打开,并在主窗体 Dispose 上关闭。

我是否应该每次都在 finally block 中处理 mycommand 对象?但这不会导致关闭的数据库连接吗?

最佳答案

没有堆栈跟踪很难确定,但我想在某个地方你有一个对函数的递归调用,它会在每次迭代时增加调用堆栈的大小。 StackOverflowException错误来自 SQLite 库,但我怀疑此时堆栈上的大多数调用都是您自己的函数。对 SQLite 库的调用是打破 Camel 后背的调用,但这不一定是错误所在。

发布堆栈跟踪(有趣的部分),也许我们可以更准确地告诉您错误在哪里。

关于vb.net - VB.NET SQLite 查询中的 StackOverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2566279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com