2017-08-03 6 views
0

Mein Code scheint korrekt. Aber wenn ich die Group Schlüsselwort in der Abfrage hinzufügen erzeugt er eine Nachricht an:Falsche Syntax in der Nähe des Schlüsselwortes

falsche Syntax nahe dem Schlüsselwort ‚Gruppe‘

aber wenn ich entfernen Sie das Group Schlüsselwort das Programm erfolgreich ausgeführt wird.

private void CSRMaintReviewer_Load(object sender, EventArgs e) 
    { 
     this.MaintReviewertbl.DataSource = null; 
     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["csrapps"].ConnectionString); 

     conn.Open(); 
     SqlCommand cmd = new SqlCommand(); 
     cmd.Connection = conn; 
     cmd.CommandType = CommandType.Text; 
     cmd.CommandText = "select " + 
          "EmailID_Reviewer, " + 
          "Reviewer_Name, " + 
          "Reviewer_Email, " + 
          "EmailID_TeamLead, " + 
          "TeamLead_Name, " + 
          "TeamLead_Email, " + 
          "Site, " + 
          "Business_Unit, " + 
          "Group, " + 
          "Station, " + 
          "Pkg_Department, " + 
          "Region, " + 
          "Account, " + 
          "Key_Field, " + 
          "EmailID_SiteManager, " + 
          "SiteManager_Name, " + 
          "SiteManager_Email, " + 
          "EmailID_SiteDirector, " + 
          "SiteDirector_Name, " + 
          "SiteDirector_Email, " + 
          "EmailID_President, " + 
          "President_Name, " + 
          "President_Email, " + 
          "Customer, " + 
          "Flag, " + 
          "CreatedBy, " + 
          "DateCreated, " + 
          "LastUpdatedBy, " + 
          "DateUpdated " + 
          "from dbo.tblCSRMaintReviewer "; 

     try 
     { 
      SqlDataReader reader = null; 
      reader = cmd.ExecuteReader(); 
      if (reader.HasRows) 
      { 
       while (reader.Read()) 
       { 
        MaintReviewer reviewer = new MaintReviewer(); 
        reviewer.EmailIDReviewer = reader["EmailID_Reviewer"].ToString(); 
        reviewer.ReviewerName = reader["Reviewer_Name"].ToString(); 
        reviewer.ReviewerEmail = reader["Reviewer_Email"].ToString(); 
        reviewer.EmailIDTeamLead = reader["EmailID_TeamLead"].ToString(); 
        reviewer.TeamLeadName = reader["TeamLead_Name"].ToString(); 
        reviewer.TeamLeadEmail = reader["TeamLead_Email"].ToString(); 
        reviewer.Site = reader["Site"].ToString(); 
        reviewer.BusinessUnit = reader["Business_Unit"].ToString(); 
        reviewer.Group = reader["Group"].ToString(); 
        reviewer.Station = reader["Station"].ToString(); 
        reviewer.PKGDepartment = reader["Pkg_Department"].ToString(); 
        reviewer.Region = reader["Region"].ToString(); 
        reviewer.Account = reader["Account"].ToString(); 
        reviewer.KeyField = reader["Key_Field"].ToString(); 
        reviewer.EmailIDSiteManager = reader["EmailID_SiteManager"].ToString(); 
        reviewer.SiteManagerName = reader["SiteManager_Name"].ToString(); 
        reviewer.SiteManagerEmail = reader["SiteManager_Email"].ToString(); 
        reviewer.EmailIDSiteDirector = reader["EmailID_SiteDirector"].ToString(); 
        reviewer.SiteDirectorName = reader["SiteDirector_Name"].ToString(); 
        reviewer.SiteDirectorEmail = reader["SiteDirector_Email"].ToString(); 
        reviewer.EmailIDPresident = reader["EmailID_President"].ToString(); 
        reviewer.PresidentName = reader["President_Name"].ToString(); 
        reviewer.PresidentEmail = reader["President_Email"].ToString(); 
        reviewer.Customer = reader["Customer"].ToString(); 
        reviewer.Flag = reader["Flag"].ToString(); 
        reviewer.CreatedBy = reader["CreatedBy"].ToString(); 
        reviewer.DateCreated = reader["DateCreated"].ToString(); 
        reviewer.LastUpdatedBy = reader["LastUpdatedBy"].ToString(); 
        reviewer.DateUpdated = reader["DateUpdated"].ToString(); 
        string[] row = { reviewer.EmailIDReviewer, reviewer.ReviewerName, reviewer.ReviewerEmail, reviewer.EmailIDTeamLead, reviewer.TeamLeadName, 
            reviewer.TeamLeadEmail, reviewer.Site, reviewer.BusinessUnit, reviewer.Group, reviewer.Station, reviewer.PKGDepartment, 
            reviewer.Region, reviewer.Account, reviewer.KeyField, reviewer.EmailIDSiteManager, reviewer.SiteManagerName, 
            reviewer.SiteManagerEmail, reviewer.EmailIDSiteDirector, reviewer.SiteDirectorName, reviewer.SiteDirectorEmail, reviewer.EmailIDPresident, 
            reviewer.PresidentName, reviewer.PresidentEmail, reviewer.Customer, reviewer.Flag, reviewer.CreatedBy, 
            reviewer.DateCreated, reviewer.LastUpdatedBy, reviewer.DateUpdated }; 
        reviewers.Add(reviewer); 
       } 
       MaintReviewertbl.DataSource = reviewers; 
       MaintReviewertbl.Refresh(); 
      } 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      conn.Close(); 
      conn.Dispose(); 
      cmd.Dispose(); 
     } 
    } 
+0

Sind Sie sicher, dass Sie die richtige Syntax der GROUP BY-Klausel verwenden? Ich bin sicher, dass Sie Syntaxfehler haben werden, wenn Sie 'TRUMPET' zu Ihrer Anfrage hinzufügen. – Nino

+0

Verwenden Sie einfach Klammergehäuse '[Gruppe]' für 'Gruppe' Spalte (die mit GROUP BY' Schlüsselwortklausel konfligiert) & die Abfrage läuft gut. –

+0

Sie können ein Schlüsselwort als Feldnamen hinzufügen, indem Sie den Namen zwischen [] in sql setzen. zB: "[group]" – Valderann

Antwort

5

Sein Sie einen Fehler geben, weil Group ist ein Schlüsselwort (Wörter, die eine besondere Bedeutung in SQL wie Select und from haben). Dieser Group steht in Konflikt mit Group By und Sie verwenden es als Spaltenname. Sie sollten Ihren Spaltennamen in der Tabelle in etwas wie Groupname oder GroupType alles ändern, das kein Schlüsselwort in SQL ist. Dies wird den Fehler beheben.

+0

Ja, Gruppe ist einer der Spaltennamen in meiner Tabelle. Aber ich kann den Namen der Spalte in der Tabelle nicht ändern, weil die Datenbank, die ich benutze, von keinem Benutzer einschließlich mir zugänglich ist. –

+1

cmd.CommandText = "select" + "EmailID_Reviewer," + "[Gruppe]," + "von dbo.tblCSRMaintReviewer"; –

+0

Ich habe das gerade eben gemacht. Aber das Nachrichtenfeld erzeugt die Nachricht "[Gruppe]". –

2

Sieht aus, als ob Sie eine Spalte mit dem Namen Group haben, aber es ist ein Schlüsselwort Ich schlage also vor, dass Sie den Spaltennamen ändern (wenn er keine strengen Codierungsänderungen benötigt) oder einfach in ein Paar [] einfügen [Group]. Denken Sie daran, es ist keine gute Übung, solche Keywords für andere Zwecke zu verwenden, sie sind bereits für andere Zwecke reserviert.

+0

Wie kann ich das tun, ohne den Spaltennamen in der Tabelle zu ändern? –

+0

@HoneyBadger: verwenden Sie das so: '..." Business_Unit, "+ " [Gruppe], "+ " Station, "..." –

+0

Ich habe es gerade getan. Aber es produziert die gleiche Ausgabe. –

Verwandte Themen