1

アクセス データベースに履歴を書き込もうとしていますが、エラーが発生し続けますthe path is invalid。接続文字列を使用しており、ウィザード自体から取得しています。コピーアンドペースト。誰でも私を助けることができますか?

ありがとう

Imports System.IO
Imports System.Data.OleDb
Public Class theControls

'The History Database Connection String
Dim theHistoryDatabaseConn As New OleDbConnection

Private Sub ComboBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles theAddressBar.KeyDown
    'Navigate to Webpage stated in theAddressBar
    If e.KeyValue = Keys.Enter Then
        theBrowser.Navigate(theAddressBar.Text)
        e.SuppressKeyPress = True
    End If
End Sub

Private Sub goForward_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles goForward.Click
    theBrowser.GoForward()
End Sub

Private Sub goBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles goBack.Click
    theBrowser.GoBack()
End Sub

Private Sub theBrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles theBrowser.DocumentCompleted

    'Set Tab Text to current web page
    Form1.TabControl1.SelectedTab.Text = theBrowser.Url.Host.ToString

    'The History

    theHistoryDatabaseConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\bin\Debug\TheHistoryDB.accdb"


    Dim theCommand As OleDbCommand = New OleDbCommand("INSERT INTO TheHistory ([Site]) VALUES (theBrowser.URL.Host)", theHistoryDatabaseConn)

    theCommand.Parameters.Add("@Site", OleDbType.Char, 255).Value = theBrowser.Url.Host.ToString

    Try
        theHistoryDatabaseConn.Open()
        theCommand.ExecuteNonQuery()

    Catch ex As Exception
        Throw ex
    Finally
        theHistoryDatabaseConn.Close()

    End Try
    theHistoryDatabaseConn.Close()
End Sub

Private Sub theBrowser_ProgressChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles theBrowser.ProgressChanged

    'Status Bar Text
    Label1.Text = theBrowser.StatusText.ToString
End Sub
End Class
4

2 に答える 2

1

質問のタイトルには「C:\documents\TheHistoryDB.accdb」と書かれていますが、コードには「|DataDirectory|\bin\Debug\TheHistoryDB.accdb」が表示されています。あなたのパスは正しいですか?

通常、ドキュメントに使用されるフォルダーは「C:\Users\myusername\Documents」のようなものです。あなたのコンピューターに C:\documents が存在しないと言っているわけではありませんが、コメントするのは奇妙な場所です。

Dim theCommand As OleDbCommand = New OleDbCommand("INSERT INTO TheHistory ([Site]) VALUES (theBrowser.URL.Host.ToString)", theHistoryDatabaseConn)

これは関係ありませんが、私には正しく見えません。オブジェクトにアクセスしようとしているように見えますが、文字列内にいます。私は VB ではなく C# 派です。それは私には怪しいように見えます。また、例外をキャッチしてすぐに再スローするのはなぜですか? それは目的を打ち負かすようなものではありませんか?

于 2013-05-24T03:01:40.763 に答える
0

アプリと同じフォルダーにデータベースがある場合は、より適切に使用してくださいstartuppath

theHistoryDatabaseConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\TheHistoryDB.accdb"
于 2013-05-24T04:01:01.607 に答える