2013-11-28 123 views
0

這是我的形式快照vb.net數據未插入MS Access數據庫

enter image description here

這是我的代碼將數據插入到數據庫

Imports System.Data.OleDb 

Public Class Test 
    Dim cnn As New OleDb.OleDbConnection 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     Dim cmd As New OleDb.OleDbCommand 
     If Not cnn.State = ConnectionState.Open Then 
      cnn.Open() 
     End If 
     cmd.Connection = cnn 
     cmd.CommandText = "INSERT INTO Test(ID, Test) " & _ 
         " VALUES(" & Me.TextBox1.Text & ",'" & Me.TextBox2.Text & "')" 
     cmd.ExecuteNonQuery() 
     cnn.Close() 
    End Sub 

    Private Sub Test_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     cnn = New OleDb.OleDbConnection 
     cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\OfficeAutomationSystem.accdb; Persist Security Info=False" 
    End Sub 
End Class 

我的數據庫名稱:OfficeAutomationSystem .accdb, 表名稱:Test, 表結構如下:

FieldName  DataType 
ID    Number 
Test    Text 

代碼運行成功,並且沒有錯誤。 當我在數據庫中看到時,沒有發現該記錄

什麼是錯誤?我無法找到它。所以,請幫助我。 在此先感謝

+0

哪些代碼執行Test_Load?你有蹤跡嗎? – NoChance

+0

爲什麼你有單引號Me.TextBox2.Text,而不是Me.TextBox1.Text?此外,這種方法會讓您容易受到SQL注入的影響,您應該查看使用存儲過程的參數,如我在此處所述:http://stackoverflow.com/questions/17172796/ms-access-2003-triggers-query-event-and- Excel中導入/ 17175640#17175640 – majjam

回答

3

有時Data Source=|DataDirectory|\...調試時出現問題。請記住,當您調試代碼時,您的項目文件夾中將有另一個\bin\debug數據庫。可能你正在更新這個數據庫中的記錄而不是原來的記錄。

嘗試設置絕對路徑並檢查記錄是否正在更新。

1
Dim cnn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Application.StartupPath & "\OfficeAutomationSystem.accdb"