Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C中DataGridView错误列中的数据检索_C#_Database_Xampp - Fatal编程技术网

C# C中DataGridView错误列中的数据检索

C# C中DataGridView错误列中的数据检索,c#,database,xampp,C#,Database,Xampp,从数据库检索数据时,它会在错误的网格视图列中显示数据,甚至有些列是空的,而且数据也会显示在错误的列中 我尝试检查所有内容,但没有找到任何解决方案,我在此处粘贴了一些代码: 注意:我使用xampp数据库进行测试 以下是问题的屏幕截图: 只是一个建议,关于: 字符串sql=SELECT*FROM staff 您的代码依赖于处于预期索引位置的结果字段,但SELECT*将按照数据库表结构返回数据,这可能与您的预期不符 最好在SQL语句中显式定义所需的字段名列表。在下面的示例中,即使在基础表结构中移动了

从数据库检索数据时,它会在错误的网格视图列中显示数据,甚至有些列是空的,而且数据也会显示在错误的列中

我尝试检查所有内容,但没有找到任何解决方案,我在此处粘贴了一些代码:

注意:我使用xampp数据库进行测试

以下是问题的屏幕截图:


只是一个建议,关于:

字符串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();