2015-11-20 89 views
0

我已經有一個多月的時間試圖解決這個問題。我正在使用SQLite並試圖編寫一個簡單的檢查來查看我是否可以連接到數據庫。我在這裏發現了一些本應該這樣做的代碼。vb 2010中的SQLite

Public Function ConnExist(strDB) As Boolean 
    Dim SQLconnect As New SQLite.SQLiteConnection() 

    Try 
     Using Query As New SQLiteCommand() 
      SQLconnect.ConnectionString = "DataSource=" & strDB & ";Version=3;New=False;Compress=True;" 
      SQLconnect.Open() 

      With Query 
       .Connection = SQLconnect 
       .CommandText = "SELECT * FROM tbltest" 
      End With 

      Query.ExecuteNonQuery() 
      SQLconnect.Close() 
     End Using 
     'SQLconnect.ConnectionString = "Data Source=" & strDB & ";Version=3;New=False" 
     'SQLconnect.Open() 
     'SQLconnect.Close() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
     'Return False 
    End Try 

    Return True 
End Function 

我知道數據庫在指定的位置。在SQLconnect.Open()部分,它出錯並告訴我數據源不能爲空。我使用數據庫瀏覽器打開了數據庫,並且沒有損壞。我究竟做錯了什麼?

+0

錯誤的含義是連接字符串的DataSource部分不能爲空(「」)。如果調用該函數的代碼不通過'strDB'中的有效DS,您將會得到該錯誤。同時打開Option Strict;請訪問http://www.connectionstrings.com/sqlite/並且你的連接也應該在'Using'塊 – Plutonix

回答

0
Public Function ConnExist(strDB) As Boolean 
    Dim cs As String 
    Dim cnn As New SQLiteConnection 
    Dim cmd As New SQLiteCommand 

    cs = "Data Source=" & strDB & ";Version=3;New=False;" 

    If (IO.File.Exists(strDB)) Then 
     cnn = New SQLiteConnection(cs) 
     Try 
      cnn.Open() 
      cmd = cnn.CreateCommand() 
      cmd.CommandText = "SELECT * FROM tblSettings" 
      cmd.ExecuteNonQuery() 
      cnn.Close() 
      cmd.Dispose() 
      cnn.Dispose() 
     Catch ex As Exception 
      Return False 
      Exit Function 
     End Try 
    Else 
     Return False 
     Exit Function 
    End If 

    Return True 

End Function 
0

這是我爲SQLite建立連接字符串的方式。

Dim constr As String = "Data Source=""" & FullFilePath & """;Pooling=true;FailIfMissing=false" 

認爲你只是錯過了路徑周圍的雙引號。

+0

我相信這個雙引號是用於VBA的。我終於明白了。我將提供下面我想到的功能。謝謝你的迴應。 – DevilDawg