为什么我的SELECT重复使用dataGrid?

时间:2013-09-16 12:06:49

标签: c# mysql

 public static DataSet selectStudent()
 {
      MySqlConnection conn = connection();
      conn.Open();
      MySqlCommand cmd = new MySqlCommand();
      cmd.Connection = conn;
      MySqlDataAdapter adap = new MySqlDataAdapter(@"SELECT person.*, student.gradePointAverage, student.majorField FROM person JOIN student", conn);
      MySqlCommandBuilder sqlCmd = new MySqlCommandBuilder(adap);
      DataSet sqlSet = new DataSet();
      adap.Fill (sqlSet, "studentInfo");
      conn.Close();
      return sqlSet;
 }

和按钮:

 private void btnAdminStudentView_Click(object sender, EventArgs e)
 {
    DataSet ds = studentHelperClass.selectStudent();
    dataGridStudent.DataSource = ds.Tables["studentInfo"];
 }

为什么这会在按钮点击上给我这样的结果?

enter image description here

1 个答案:

答案 0 :(得分:6)

您的查询生成笛卡尔积,因为您无法定义记录彼此之间的关系。您需要添加条件

SELECT person.*, student.gradePointAverage, student.majorField 
FROM person JOIN student
     ON person.ID = student.ID  // example only

这意味着表格person中的记录与表格ID上的student相关。

要进一步了解联接,请访问以下链接: