【问题标题】:Column '[Student Name]' does not belong to table列“[学生姓名]”不属于表
【发布时间】:2016-02-09 12:45:25
【问题描述】:

我试图解决这个问题,但无法解决相同的列名称,但它不起作用。如何解决?

private void GetData()
{
    try
    {
        dt.Columns.Clear();
        dt.Rows.Clear();

        char[] alignment = new char[22];
        int[] width = new int[22];
        dt.Columns.Add("S.No", typeof(int)); alignment[0] = 'C'; width[0] = 20;
        dt.Columns.Add("Ad.No", typeof(int)); alignment[1] = 'C'; width[1] = 20;
        dt.Columns.Add("Gr No", typeof(string)); alignment[2] = 'L'; width[2] = 60;
        //dt.Columns.Add("Father Name", typeof(string));
        dt.Columns.Add("Ad. Date", typeof(string)); alignment[3] = 'L'; width[3] = 30;
        dt.Columns.Add("[Student Name]", typeof(string)); alignment[4] = 'C'; width[0] = 20;
        dt.Columns.Add("Father Name", typeof(string)); alignment[5] = 'C'; width[0] = 20;

        string query = "";
        if (radioButtonClass.Checked)
        {
            query = " select  ROW_NUMBER() OVER(ORDER BY  Class,StudentName) AS [S.No], AdmissionNo as [Ad.No], EnrollmentNo as [Gr No],convert(varchar,AdmissionDate,103)as [Ad.Date],StudentName as [Student Name],FatherName as [Father Name],  " +
                   " from vu_StdAdmissionFeeInfo " +
                   " where AdmissionDate >='" + dtpform.Value + "' and AdmissionDate<='" + dtpTo.Value + "'" +
                   "" + (cmbClass.Text.Equals("--Select--") ? "" : " and Class='" + cmbClass.Text + "'   ") +
                   "" + (cmbsection.Text.Equals("--Select--") ? "" : " and Section='" + cmbsection.Text + "'   ") +
                   " order by Class,StudentName";
                        }
        DataTable dt2 = new DataTable();
        dt2 = utility.Get(query);
        //  dt2.Clear();
        foreach (DataRow item in dt2.Rows)
        {
            DataRow dr = dt.NewRow();
            dr["S.NO"] = item["S.NO"];
            dr["Ad.No"] = item["Ad.No"];
            dr["Gr No"] = item["Gr No"];
            dr["Ad. Date"] = item["Ad. Date"];
            dr["[Student Name]"] = item["[Student Name]"];
            dr["Father Name"] = item["Father Name"];

            dt.Rows.Add(dr);
        }

        dt2.Rows.Clear();
       // dt.Rows.Clear();
        if (dt.Rows.Count > 0)
        {
            dgvReport.DataSource = null;
            dgvReport.DataSource = dt;          
        }
        else
        {
            dgvReport.DataSource = null;
        }
    }
    }
}

【问题讨论】:

  • 列名不应包含space
  • SQL Injection alert - 您应该将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
  • 当您在 SQL 中执行 As [Student Name] 时,您命名的返回列 Student Name 不带括号。括号只是用来告诉 SQL 空格是名称的一部分。
  • Hemal [广告。日期]还有空间
  • 请避免回滚有用的编辑。

标签: c# asp.net sql-server datatable


【解决方案1】:

删除以下代码中[学生姓名]的括号:

                foreach (DataRow item in dt2.Rows)
                {
                    DataRow dr = dt.NewRow();
                    dr["S.NO"] = item["S.NO"];
                    dr["Ad.No"] = item["Ad.No"];
                    dr["Gr No"] = item["Gr No"];
                    dr["Ad. Date"] = item["Ad. Date"];
                    dr["[Student Name]"] = item["[Student Name]"];
                    dr["Father Name"] = item["Father Name"];

                    dt.Rows.Add(dr);
                }

或者这个代码:

dt.Columns.Add("[Student Name]", typeof(string)); alignment[4] = 'C'; width[0] = 20;

或者

删除列的空格

【讨论】:

  • 在代码中设置断点,然后查看异常发生的位置。
  • 然后删除列标题的空格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多