查询表达式“Runner Name”中的语法错误(缺少运算符)

时间:2015-05-04 00:21:44

标签: vb.net syntax-error

每次运行程序时,它都会在查询表达式“Runner Name”中弹出 - 语法错误(缺少运算符)。 'Runner name'是我的数据库中的字段名称。带有da.Fill(dt)的行会突出显示。有人可以请帮助。我很绝望

Public Class AddNewRace
Dim cnn As New OleDb.OleDbConnection
Private Sub RefreshData()
    If Not cnn.State = ConnectionState.Open Then
        ' open connection '
        cnn.Open()
    End If 
    Dim da As New OleDb.OleDbDataAdapter("SELECT ID as [ID]," & _
                                        "Runner Name as [Name], Running Average Speed, Cyclying Average Speed, Swimming style, Calories Burned FROM Training log ORDER BY ID", cnn)
    Dim dt As New DataTable

    'fill datatable'
    da.Fill(dt)

    Me.dgvData.DataSource = dt
    ' close connection'

    cnn.Close()
End Sub

Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

    Dim cmd As New OleDb.OleDbCommand
    ' add data to table '
    If Not cnn.State = ConnectionState.Open Then
        ' open connection '
        cnn.Open()
    End If

    cmd.Connection = cnn
    If Me.txtID.Tag & "" = "" Then


        cmd.CommandText = "INSERT INTO Members (ID, Runner Name, Running Average Spee d, Cyclying Average Speed, Swimming style , Calories Burned) VALUES ('" & Me.txtID.Text & "' , '" & Me.txtRunnerName.Text & "' , '" & Me.txtRunSpeed.Text & "' , '" & Me.txtCycleSpeed.Text & "', '" & Me.txtSwimStyle.Text & "', '" & Me.txtCaloriesBurned.Text & "')"
        cmd.ExecuteNonQuery()

    Else
        cmd.CommandText = "UPDATE Training log SET ID=" & Me.txtID.Text & ", Runner Name='" & Me.txtRunnerName.Text & "', Running Average Speed='" & txtRunSpeed.Text & "', Cyclyin Average Speed='" & txtCycleSpeed.Text & "', Swimming style='" & txtSwimStyle.Text & "', Calories Burned='" & txtCaloriesBurned.Text & "' WHERE ID='" & txtRunnerName.Tag & "' "
        cmd.ExecuteNonQuery()
    End If
    ' Refresh Data in list'
    RefreshData()

    Me.btnEdit.PerformClick()

    ' close connection'

    cnn.Close()
End Sub

2 个答案:

答案 0 :(得分:1)

您可能会发现语法select runner name被视为select runner as name的缩写形式,这会使以下as成为问题。即使它们没有被解释,标准SQL也会将RunnerName视为两个不同的标记,除非您另有说明。

如果你的列名中有空格,你已经知道如何修复它(方括号来划分它),你可能不会意识到这一点:

select [Runner Name] as [Name]

您可能还必须对包含空格的其他列执行此操作。

答案 1 :(得分:0)

如果列的名称中有空格,则需要将其括在括号中。

Runner Name应为[Runner Name]

当然,您的许多列都有空格,您需要以这种方式调整它们。对于insert,update和delete语句也是如此。

您可以考虑避免在列名中使用空格,并使用驼峰大小写设计数据库列,例如RunnerName