查询表达式中的语法错误(缺少运算符)'Runner Name'
Syntax error (missing operator) in query expression 'Runner Name'
每次我 运行 我的程序都会不断弹出 - 查询表达式 '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
如果您的专栏名称中有 space,您需要将其括在方括号中。
Runner Name
应该是 [Runner Name]
当然,您的许多列都有 space,您需要这样调整它们。对于您的插入、更新和删除语句也是如此。
您可以考虑避免在您的列名中使用 space,并使用驼峰式大小写设计您的数据库列,例如 RunnerName
您可能会发现语法 select runner name
被视为 select runner as name
的 shorthand 形式,这会使以下 as
相当有问题。即使它们没有被这样解释,标准 SQL 也会将 Runner
和 Name
视为两个不同的标记,除非您另有说明。
如果您的列名中有空格,您已经知道如何修复它(用方括号分隔它),您可能没有意识到:
select [Runner Name] as [Name]
您可能还必须对其他包含空格的列执行此操作。
每次我 运行 我的程序都会不断弹出 - 查询表达式 '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
如果您的专栏名称中有 space,您需要将其括在方括号中。
Runner Name
应该是 [Runner Name]
当然,您的许多列都有 space,您需要这样调整它们。对于您的插入、更新和删除语句也是如此。
您可以考虑避免在您的列名中使用 space,并使用驼峰式大小写设计您的数据库列,例如 RunnerName
您可能会发现语法 select runner name
被视为 select runner as name
的 shorthand 形式,这会使以下 as
相当有问题。即使它们没有被这样解释,标准 SQL 也会将 Runner
和 Name
视为两个不同的标记,除非您另有说明。
如果您的列名中有空格,您已经知道如何修复它(用方括号分隔它),您可能没有意识到:
select [Runner Name] as [Name]
您可能还必须对其他包含空格的列执行此操作。