每次运行程序时,它都会在查询表达式“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
答案 0 :(得分:1)
您可能会发现语法select runner name
被视为select runner as name
的缩写形式,这会使以下as
成为问题。即使它们没有被解释,标准SQL也会将Runner
和Name
视为两个不同的标记,除非您另有说明。
如果你的列名中有空格,你已经知道如何修复它(方括号来划分它),你可能不会意识到这一点:
select [Runner Name] as [Name]
您可能还必须对包含空格的其他列执行此操作。
答案 1 :(得分:0)
如果列的名称中有空格,则需要将其括在括号中。
Runner Name
应为[Runner Name]
当然,您的许多列都有空格,您需要以这种方式调整它们。对于insert,update和delete语句也是如此。
您可以考虑避免在列名中使用空格,并使用驼峰大小写设计数据库列,例如RunnerName