C# C中DataGridView错误列中的数据检索
从数据库检索数据时,它会在错误的网格视图列中显示数据,甚至有些列是空的,而且数据也会显示在错误的列中 我尝试检查所有内容,但没有找到任何解决方案,我在此处粘贴了一些代码: 注意:我使用xampp数据库进行测试 以下是问题的屏幕截图:C# C中DataGridView错误列中的数据检索,c#,database,xampp,C#,Database,Xampp,从数据库检索数据时,它会在错误的网格视图列中显示数据,甚至有些列是空的,而且数据也会显示在错误的列中 我尝试检查所有内容,但没有找到任何解决方案,我在此处粘贴了一些代码: 注意:我使用xampp数据库进行测试 以下是问题的屏幕截图: 只是一个建议,关于: 字符串sql=SELECT*FROM staff 您的代码依赖于处于预期索引位置的结果字段,但SELECT*将按照数据库表结构返回数据,这可能与您的预期不符 最好在SQL语句中显式定义所需的字段名列表。在下面的示例中,即使在基础表结构中移动了
只是一个建议,关于: 字符串sql=SELECT*FROM staff 您的代码依赖于处于预期索引位置的结果字段,但SELECT*将按照数据库表结构返回数据,这可能与您的预期不符 最好在SQL语句中显式定义所需的字段名列表。在下面的示例中,即使在基础表结构中移动了一列,我也能够准确地知道结果字段所在的位置
字符串sql=从staff中选择字段1、字段2、字段3 经过多次努力,我终于找到了解决办法。我补充说:
dataGridView1.AutoGenerateColumns = true;
dataGridView2.AutoGenerateColumns = true;
dataGridView3.AutoGenerateColumns = true;
要检索代码中的每个函数并为数据库中的每个表定义一个新的DataTable,代码如下:
// NEW DataTables for each Table in Database
DataTable dt = new DataTable();
DataTable dt2 = new DataTable();
DataTable dt3 = new DataTable();
这就解决了我的问题:select*将使用数据库决定使用的顺序返回表中的所有列。按照指定的顺序精确指定列名like@Steve我明确定义了从staff中选择staffNo、fname、lname、position、sex、dob、salary、branchno等列;错误仍然存在。当我检查数据库时,记录是按正确的顺序正确添加的,就在检索时,它在错误的数据网格视图行中显示错误的数据,如上图所示。我会尝试在populate3方法中放置一个断点,并检查您在其参数中收到的数据类型。使用调试器是解决这类不可能的错误的最快方法。@Steve Thank man,我解决了它,问题在于DataTable和AutoGenerating列。我明确定义了列,如SELECT staffNo、fname、lname、position、sex、dob、salary、branchno FROM staff;错误仍然存在。当我检查数据库时,记录是以正确的顺序正确添加的,只要检索到它,就会在错误的数据网格视图行中显示错误的数据,如上图所示。
// NEW DataTables for each Table in Database
DataTable dt = new DataTable();
DataTable dt2 = new DataTable();
DataTable dt3 = new DataTable();