如何将我的信息从VB应用程序传递到Access数据库表?

时间:2016-12-20 15:34:48

标签: vb.net

所以这是我正在使用的代码:

Public Class Form1

    Dim dtmSystemDate As Date
    Dim strResult As String
    Dim Student As Double = Nothing

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBeginWorkout.Click

        Dim cnn As New OleDb.OleDbConnection
        Dim cmd As New OleDb.OleDbCommand
        Dim Start As String = "Start"

        ' Set date/time to today's date/time.
        dtmSystemDate = Now()


        ' Convert txtIDNumber to a Double.
        Try
            Student = CDbl(txtIDNumber.Text)
        Catch ex As Exception
        End Try

        ' Determine if input is a valid ID number.
        If Student >= 10000 And Student <= 99999 Then
            MessageBox.Show("Your start time is " & dtmSystemDate.ToString("F"), "Welcome, Student # " & Student.ToString())
        Else
            MessageBox.Show("Please enter a valid College ID number", "Invalid Entry", MessageBoxButtons.OK, MessageBoxIcon.Exclamation
                            )
        End If

        cnn.ConnectionString = "provider = microsoft.jet.oledb.4.0; data source = C:\users\econnelly\My Documents\Access Databases\Fit Track.mdb"
        cnn.Open()
        cmd.Connection = cnn
        cmd.CommandText = "insert into Fit Track (Student_ID,Start/Stop,Date/Time) values ('" & Student & "','" & Start & "', '" & dtmSystemDate & "')"
        cmd.ExecuteNonQuery()
        cnn.Close()

我试图将这些已定义的变量传递给Access数据库,但到目前为止还没有成功。

每当我尝试运行程序时,都会收到以下错误:

System.Data.dll中出现未处理的“System.Data.OleDb.OleDbException”类型异常

此错误是从cmd.ExecuteNonQuery()函数触发的,但我不确定原因。

到目前为止,我一直无法将信息填充到数据库中。有人能指出我如何解决这个问题的正确方向吗?

2 个答案:

答案 0 :(得分:1)

我认为问题在于表名“Fit Track”,其中有一个空格。

您可以使用方括号,例如[Fit Track] 或者你可以使用像'Fit Track'这样的单引号

答案 1 :(得分:0)

我不知道答案,但是在数据库表或列名中使用空格或特殊字符(如斜杠)时遇到了麻烦。另外,我认为您的连接字符串不正确。您可能还想阅读一些关于SQL注入的内容,它可能很危险。

编辑:您可能还需要导入System.Data.Oledb