如果某些数据为空,Winforms datagridview将不会加载数据

本文关键字:数据 datagridview Winforms 加载 如果 | 更新日期: 2023-09-27 18:29:37

我的数据库中有3个表。学校(一对多)-学生(一对一)-钱。这一切都很好,但我有一个datagridview,它内部连接了所有三个表,但它不会显示任何在money表中没有的数据。所以所有在表格中保存了信息的学生都会出现,但我也想看看那些在表格中没有数据的学生。应该是这样吗?感谢

如果某些数据为空,Winforms datagridview将不会加载数据

从那里使用外部连接

只有当两个联接中至少有一行时,内部联接才返回行匹配联接条件的表。内部联接消除行与另一个表中的行不匹配。

如果要显示没有Money记录的行,请在sql查询中使用LEFT JOIN。

SELECT sch.SomeColumn
FROM School sch
INNER JOIN Students sts ON <some students condition>
LEFT JOIN Money m ON <some money condition>

引用和示例来自Sql Server,但也适用于MySql

您可以通过使用Linq:的外部联接来解决它

List<Person> people = new List<Person> { magnus, terry, charlotte, arlene };
List<Pet> pets = new List<Pet> { barley, boots, whiskers, bluemoon, daisy };
var query = from person in people
            join pet in pets on person equals pet.Owner into gj
            from subpet in gj.DefaultIfEmpty()
            select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) };

如果只使用SQL,则需要在SQL中使用外部联接。