2017-08-03 9 views
0

私のコードは正しいようです。 「グループ」はキーワードの近くに不適切な構文

が、私はGroupキーワードを削除するとプログラムが正常に実行されたキーワードの近くに

不正な構文:私はクエリでGroupキーワードを追加する場合しかし、それはメッセージを生成します。

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

あなたは 'GROUP BY'節の正しい構文を使用していますか?クエリに 'TRUMPET'を追加すると、構文エラーが起きるはずです。 – Nino

+0

'Group'カラム(' GROUP BY'キーワード句と矛盾します)にブラケットエンクロージャ '[Group]'を使用するだけです。クエリは正常に動作します。 –

+0

キーワードをフィールド名として追加するには、sqlの[]の間に名前を入力します。例: "[group]" – Valderann

答えて

5

Groupがキーワード(SelectfromのようなSQLで特別な意味を持つ言葉)であるので、あなたにエラーを与えて、その。このGroupGroup Byと競合しており、これを列名として使用しています。テーブルのカラム名は、GroupnameまたはGroupTypeのようにSQLのキーワードではないものに変更する必要があります。これでエラーは解決します。

+0

はい、グループは私のテーブルの列名の1つです。しかし、私が使用しているデータベースは私を含むどのユーザーからもアクセスできないため、テーブルの列の名前を変更することはできません。 –

+1

cmd.CommandText = "選択" + "EmailID_Reviewer、" + "[グループ]、" + "from dbo.tblCSRMaintReviewer"; –

+0

私はちょうどその前にそれをしました。しかし、メッセージボックスは "[グループ]"メッセージを生成します。 –

2

Groupという名前の列があるようですが、それはキーワードなので、厳密なコーディングの変更が必要ない場合は列名を変更するか、単にこれを[]のペアで囲むことをお勧めします[Group]。そのようなキーワードを他の目的のために与えるのは良い習慣ではないことに留意してください。すでに他の目的のために予約されています。

+0

テーブルの列名を変更せずにどうすればいいですか? –

+0

@HoneyBadger:次のように使います: '..." Business_Unit、 "+ " [グループ] "+ "駅、 "+ ..." –

+0

私はちょうどそれをしました。しかし、それは同じ出力を生成します。 –

関連する問題