2013-12-19 218 views
3

我正在使用SQL服务器构建Windows窗体应用程序。我遇到的问题是我在调用.Fill函数时遇到未处理的异常错误。在其他信息下,它表示在INNER关键字附近有语法错误。迄今为止,我已经写了下面的代码:“INNER”关键字附近的语法错误

Imports System.Data 
Imports System.Data.SqlClient 
Public Class Form1 
    Dim cn As New SqlConnection("Data Source=(LocalDB)\v11.0;AttachDbFilename='C:\Users\Sean\Documents\Visual Studio 2013\Projects\Baseball\Baseball\Baseball.mdf';Integrated Security=True") 
    Dim da As New SqlDataAdapter 
    Dim ds As New DataSet 



    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load 
     Dim sql As String 

     sql = "SELECT teammates.PlayerName, teammates.Number, teammates.BirthDate, Position.Position, teammates.Salary" 
     sql += "From teammates INNER JOIN Position ON teammates.PositionID = Position.PositionID" 



     With da 
      .SelectCommand = New SqlCommand 
      .SelectCommand.Connection = cn 
      .SelectCommand.CommandText = sql 
      .SelectCommand.CommandType = CommandType.Text 

      cn.Open() 
      .Fill(ds, "teammates") 
      cn.Close() 
     End With 

     With grdPlayers 
      .AutoGenerateColumns = True 
      .AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells 
      .DataSource = ds 
      .DataMember = "teammates" 

     End With 

     Call FormatGrid() 



     cn = Nothing 
     da = Nothing 

    End Sub 

    Private Sub FormatGrid() 
     Dim rightStyle As New DataGridViewCellStyle 
     rightStyle.Alignment = DataGridViewContentAlignment.MiddleRight 

     Dim altStyles As New DataGridViewCellStyle 
     altStyles.BackColor = Color.WhiteSmoke 
     grdPlayers.AlternatingRowsDefaultCellStyle = altStyles 

     Dim curStyle As New DataGridViewCellStyle 
     curStyle.Format = "c" 
     curStyle.Alignment = DataGridViewContentAlignment.MiddleRight 

     With grdPlayers 
      .Columns(0).HeaderText = "Name" 
      .Columns(1).HeaderText = "Number" 
      .Columns(2).HeaderText = "Born" 
      .Columns(4).HeaderText = "Position" 
      With .Columns(4) 
       .HeaderCell.Value = "Salary" 
       .HeaderCell.Style = rightStyle 
       .DefaultCellStyle = curStyle 
      End With 
      .Columns(0).HeaderText = "Name" 
     End With 
    End Sub 

End Class 
+0

我删除了c#标签。这个问题与c#无关。 – gunr2171

回答

5

您需要的最后选定列FROM之间的空间。现在,您查询结束为:

SELECT ..., teammates.SalaryFROM 

注意缺少空间。因此,只需添加一个空间到下一个字符串的开头:

sql += " From teammates INNER 
'  ^notice the space 

这将导致:

SELECT ..., teammates.Salary FROM 
--       ^^ space 
+0

工程就像一个魅力!谢谢您的帮助!!! – ocsean

1

成全它一个字符串,像这样:

sql = "SELECT teammates.PlayerName, teammates.Number, teammates.BirthDate, Position.Position, teammates.Salary From teammates INNER JOIN Position ON teammates.PositionID = Position.PositionID" 
+0

有道理!感谢您的帮助! – ocsean

+0

@ user3117264 - 没问题,如果您觉得它对您有帮助,可随时投票。祝你好运。 :-) –

相关问题