每当我的程序需要查询数据库时,都会导致GUI错误,例如表单字体随机更改,表单本身调整大小,数据网格中的数据混合在一起,并且会影响整个程序,而不仅仅是调用查询函数的表单。
我使用此连接
"Provider=Microsoft.ACE.OLEDB.12.0;"
Public DBDA As OleDbDataAdapter
Public DBDT As DataTable
DBDT = New DataTable
DBDA = New OleDbDataAdapter(DBCmd)
RecordCount = DBDA.Fill(DBDT)
这是我的执行查询函数:
Public Sub ExecQuery(Query As String)
'RESET QUERY STATS
RecordCount = 0
Exception = ""
Try
'OPEN A CONNECTION
DBCon.Open()
'CREATE DB COMMAND
DbCmd = New OleDbCommand(Query, DBCon)
'LOAD PARAMETERS INTO COMMAND
Params.ForEach(Sub(Par) DbCmd.Parameters.Add(Par))
'CLEAR PARAMETERS LIST
Params.Clear()
'EXECUTE COMMAND & FILL DATA
DBDT = New DataTable
DBDA = New OleDbDataAdapter(DbCmd)
RecordCount = DBDA.Fill(DBDT)
Catch ex As Exception
Exception = ex.Message
End Try
'CLOSE CONNECTION
If DBCon.State = ConnectionState.Open Then DBCon.Close()
End Sub
以及我如何从表单查询的示例
Private QC As New QueryControl
Public Sub RefreshGrid()
'RUN QUERY
QC.ExecQuery("SELECT * FROM Database")
If Not String.IsNullOrEmpty(QC.Exception) Then MsgBox(QC.Exception) : Exit Sub
'POPULATE DATAGRID
Datagridview1.DataSource = QC.DBDT
End Sub
我尝试在单独注释每一行的同时运行调试程序,并得出结论,ExecQuery(( 函数是导致问题的原因。有人遇到过类似的事情吗?
我遇到了表单大小调整的问题。它是 32 位 Ace 提供程序。我下载了 64 位 Ace 提供程序并安装了它。在解决方案属性中,取消选中首选 32 位框,一切应该都很好。