2014-03-01 68 views
1

我正在开发销售点系统。我想显示用户的数据库连接状态。我使用MS Access 2013数据库和Visual Studio 2010(VB)。我创建的模块为这个项目如下,如何在VB 2010中显示数据库连接状态

Imports System.Data.OleDb 
Module ModConVar 
    Public sql As String 
    Public cmd As OleDbCommand 
    Public dr As OleDbDataReader 

    Public conn As OleDbConnection 
    Public connStr As String = System.Environment.CurrentDirectory.ToString & "\NCS_POS_DB.accdb" 

    Public Sub ConnDB() 
     Try 
      conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & connStr & "") 
      conn.Open() 
     Catch ex As Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 
End Module 

和我有一个在主MDI形式命名lblDBStatus标签,我试图与跟随着的代码,但它dosent工作。

If conn.State = ConnectionState.Open Then 
    lblDBStatus.Text = "CONECTED" 
End If 

有什么建议吗?

+0

你说的“不工作”是什么意思?你什么时候运行第二个代码块?康恩的价值及其预期状态如何? – Markus

+0

它不工作..显示一个错误:(我认为“conn.State = ConnectionState.Open”是错误的语法。 – Geeth

回答

0

只有当连接状态打开时,您才会显示“CONNECTED”。否则,你的标签就不会显示任何

试试这个,并确保连接的开放:

If conn.State = ConnectionState.Open Then 
    lblDBStatus.Text = "CONNECTED" 
Else 
    lblDBStatus.Text = "DISCONNECTED" 
End If 
0

OleDbConnection暴露了StateChanged事件。

所以,你可以跟踪这样的状态:

Public Sub ConnDB() 

    Using connection As New OleDbConnection("...") 
     AddHandler connection.StateChange, AddressOf Me.OnConnectionStateChange 
     Try 
      connection.Open() 
      'Do stuff.. 
     Catch ex As Exception 
      Throw ex 
     Finally 
      RemoveHandler connection.StateChange, AddressOf Me.OnConnectionStateChange 
     End Try 
    End Using 

End Sub 

Private Sub OnConnectionStateChange(sender As Object, e As StateChangeEventArgs) 
    MessageBox.Show(e.CurrentState.ToString()) 
End Sub 
+0

请清楚解释清楚.. :( – Geeth

+0

@Geeth请清楚解释什么不清楚。 –