dataGridView怎么读取sql数据库的多行数据

zz72238119 2016-06-15 09:37:37
实际表格是这样
但是程序读出来是这样
为什么会这样,求解啊
...全文
302 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
龍过鸡年 2016-06-16
  • 打赏
  • 举报
回复
引用 23 楼 zz72238119 的回复:
你的代码和第二张图一样的,正确的应该是第一张图的
那应该是查询的问题,检查 sql 存储吧
zz72238119 2016-06-16
  • 打赏
  • 举报
回复
引用 22 楼 qqamoon 的回复:
[quote=引用 20 楼 zz72238119 的回复:] [quote=引用 19 楼 qqamoon 的回复:] [quote=引用 13 楼 zz72238119 的回复:] 这个运行结果和原来的是一样的 "exec SP_I_FAT_GetCurrentJob 'MXASMTL4'"这条查询语句的查询结果不是在一个表中的, 是几个表其中的一些字段,我的代码如果查询的结果只有一行,结果是没有问题的,如果查询 两行就会出问题了,就像一楼显示的那样,第二个结果完全变了
你说的原来是指什么? 是指显示的结果和上面那幅图片里的一样? 上面那幅图片的程序是你写嘛? 用的也是 SP_I_FAT_GetCurrentJob 查询出结果的吗? 怎么感觉越来越糊涂了呢。[/quote] 第一张图是用的JAVA读出来的 第二张图是用C#读出来的,正确结果应该是第一张图[/quote] 我的那段代码和第几张图的结果一样?[/quote] 你的代码和第二张图一样的,正确的应该是第一张图的
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 7 楼 xuzuning 的回复:
数据库里是两条一模一样的数据,读出来后就把第二条数据给改了? 多半是你读错了表
这是一次性读的,有可能错吗?
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 6 楼 u011286937 的回复:
[quote=引用 4 楼 zz72238119 的回复:] [quote=引用 2 楼 u011286937 的回复:] 恕我眼拙 , 你是不是贴反了?
sql数据库里的数据是第一张图的数据,我的程序读出来的是第二张图的数据,数据不一样,不知道哪里出的问题[/quote] 你还是把代码贴出来把,像你这种情况应该是细节问题[/quote]
string str = "exec SP_I_FAT_GetCurrentJob'MXASMTL4'";
            DataTable dt = new DataTable();
            dataGridView1.DataSource = dt;
            dt.Columns.Add("制令号");            
            dt.Columns.Add("工单ID");
            dt.Columns.Add("物料编码");
            dt.Columns.Add("物料名称");
            dt.Columns.Add("物料规格");
            dt.Columns.Add("工单计划数量");
            dt.Columns.Add("工单完成数量");
            dt.Columns.Add("开始时间");
            dt.Columns.Add("完成时间");
            dataGridView1.DataSource = dt;
            dataGridView1.Columns[0].Width = 80;
            dataGridView1.Columns[1].Width = 50;
            dataGridView1.Columns[2].Width = 120;
            dataGridView1.Columns[3].Width = 120;
            dataGridView1.Columns[4].Width = 180;
            dataGridView1.Columns[5].Width = 90;
            dataGridView1.Columns[6].Width = 90;
            dataGridView1.Columns[7].Width = 199;
            dataGridView1.Columns[8].Width = 199;
            DataRow dr = dt.NewRow();
            dt.Rows.Add(dr);
            DataRow drr = dt.NewRow();
            dt.Rows.Add(drr);
            SqlCommand cmd = new SqlCommand(str, comm);            
            SqlDataReader sdr = cmd.ExecuteReader();
            while (sdr.Read())
            {
                dr[0] = sdr.GetString(sdr.GetOrdinal("制令号"));
                dr[1] = sdr.GetInt32(sdr.GetOrdinal("工单ID")).ToString();
                dr[2] = sdr.GetString(sdr.GetOrdinal("物料编码"));
                dr[3] = sdr.GetString(sdr.GetOrdinal("物料名称"));
                dr[4] = sdr.GetString(sdr.GetOrdinal("物料规格"));
                dr[5] = sdr.GetDecimal(sdr.GetOrdinal("工单计划数量")).ToString();
                dr[6] = sdr.GetDecimal(sdr.GetOrdinal("工单完工数量")).ToString();
                dr[7] = sdr.GetDateTime(sdr.GetOrdinal("开始日期")).ToString();
                dr[8] = sdr.GetDateTime(sdr.GetOrdinal("结束日期")).ToString();
                
            }
这是代码,我的代码只创建了一行,而读取的数据是两行数据,是不是问题出在这里?
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
string str = "exec SP_I_FAT_GetCurrentJob'MXASMTL14'"; DataTable dt = new DataTable(); dataGridView1.DataSource = dt; dt.Columns.Add("制令号"); dt.Columns.Add("工单ID"); dt.Columns.Add("物料编码"); dt.Columns.Add("物料名称"); dt.Columns.Add("物料规格"); dt.Columns.Add("工单计划数量"); dt.Columns.Add("工单完成数量"); dt.Columns.Add("开始时间"); dt.Columns.Add("完成时间"); dataGridView1.DataSource = dt; dataGridView1.Columns[0].Width = 80; dataGridView1.Columns[1].Width = 50; dataGridView1.Columns[2].Width = 120; dataGridView1.Columns[3].Width = 120; dataGridView1.Columns[4].Width = 180; dataGridView1.Columns[5].Width = 90; dataGridView1.Columns[6].Width = 90; dataGridView1.Columns[7].Width = 199; dataGridView1.Columns[8].Width = 199; DataRow dr = dt.NewRow(); dt.Rows.Add(dr); SqlCommand cmd = new SqlCommand(str, comm); SqlDataReader sdr = cmd.ExecuteReader(); while (sdr.Read()) { dr[0] = sdr.GetString(sdr.GetOrdinal("制令号")); dr[1] = sdr.GetInt32(sdr.GetOrdinal("工单ID")).ToString(); dr[2] = sdr.GetString(sdr.GetOrdinal("物料编码")); dr[3] = sdr.GetString(sdr.GetOrdinal("物料名称")); dr[4] = sdr.GetString(sdr.GetOrdinal("物料规格")); dr[5] = sdr.GetDecimal(sdr.GetOrdinal("工单计划数量")).ToString(); dr[6] = sdr.GetDecimal(sdr.GetOrdinal("工单完工数量")).ToString(); dr[7] = sdr.GetDateTime(sdr.GetOrdinal("开始日期")).ToString(); dr[8] = sdr.GetDateTime(sdr.GetOrdinal("结束日期")).ToString(); } 这是代码,我的代码只创建了一行,而读取的数据是两行数据,是不是问题出在这里?
xuzuning 2016-06-15
  • 打赏
  • 举报
回复
数据库里是两条一模一样的数据,读出来后就把第二条数据给改了? 多半是你读错了表
肖半仙丶1413 2016-06-15
  • 打赏
  • 举报
回复
引用 4 楼 zz72238119 的回复:
[quote=引用 2 楼 u011286937 的回复:] 恕我眼拙 , 你是不是贴反了?
sql数据库里的数据是第一张图的数据,我的程序读出来的是第二张图的数据,数据不一样,不知道哪里出的问题[/quote] 你还是把代码贴出来把,像你这种情况应该是细节问题
dxyshuni 2016-06-15
  • 打赏
  • 举报
回复
先检查一下传给datagridview的数据集跟数据库查询的是否一致
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 2 楼 u011286937 的回复:
恕我眼拙 , 你是不是贴反了?
sql数据库里的数据是第一张图的数据,我的程序读出来的是第二张图的数据,数据不一样,不知道哪里出的问题
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 1 楼 u013731003 的回复:
恕我眼拙,你想表达点什么,想要什么效果
sql数据库里的数据是第一张图的数据,我的程序读出来的是第二张图的数据,数据不一样,不知道哪里出的问题
肖半仙丶1413 2016-06-15
  • 打赏
  • 举报
回复
恕我眼拙 , 你是不是贴反了?
wskdsgcf 2016-06-15
  • 打赏
  • 举报
回复
恕我眼拙,你想表达点什么,想要什么效果
龍过鸡年 2016-06-15
  • 打赏
  • 举报
回复
引用 20 楼 zz72238119 的回复:
[quote=引用 19 楼 qqamoon 的回复:] [quote=引用 13 楼 zz72238119 的回复:] 这个运行结果和原来的是一样的 "exec SP_I_FAT_GetCurrentJob 'MXASMTL4'"这条查询语句的查询结果不是在一个表中的, 是几个表其中的一些字段,我的代码如果查询的结果只有一行,结果是没有问题的,如果查询 两行就会出问题了,就像一楼显示的那样,第二个结果完全变了
你说的原来是指什么? 是指显示的结果和上面那幅图片里的一样? 上面那幅图片的程序是你写嘛? 用的也是 SP_I_FAT_GetCurrentJob 查询出结果的吗? 怎么感觉越来越糊涂了呢。[/quote] 第一张图是用的JAVA读出来的 第二张图是用C#读出来的,正确结果应该是第一张图[/quote] 我的那段代码和第几张图的结果一样?
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 18 楼 hanjun0612 的回复:
那么,我只能说。。你看看你现在的sql server和config里配置的是不是同一个服务器上数据库?
这个肯定是一样的,JAVA能读出来,C#肯定也能读出来,不晓得问题出在哪里
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 19 楼 qqamoon 的回复:
[quote=引用 13 楼 zz72238119 的回复:] 这个运行结果和原来的是一样的 "exec SP_I_FAT_GetCurrentJob 'MXASMTL4'"这条查询语句的查询结果不是在一个表中的, 是几个表其中的一些字段,我的代码如果查询的结果只有一行,结果是没有问题的,如果查询 两行就会出问题了,就像一楼显示的那样,第二个结果完全变了
你说的原来是指什么? 是指显示的结果和上面那幅图片里的一样? 上面那幅图片的程序是你写嘛? 用的也是 SP_I_FAT_GetCurrentJob 查询出结果的吗? 怎么感觉越来越糊涂了呢。[/quote] 第一张图是用的JAVA读出来的 第二张图是用C#读出来的,正确结果应该是第一张图
龍过鸡年 2016-06-15
  • 打赏
  • 举报
回复
引用 13 楼 zz72238119 的回复:
这个运行结果和原来的是一样的 "exec SP_I_FAT_GetCurrentJob 'MXASMTL4'"这条查询语句的查询结果不是在一个表中的, 是几个表其中的一些字段,我的代码如果查询的结果只有一行,结果是没有问题的,如果查询 两行就会出问题了,就像一楼显示的那样,第二个结果完全变了
你说的原来是指什么? 是指显示的结果和上面那幅图片里的一样? 上面那幅图片的程序是你写嘛? 用的也是 SP_I_FAT_GetCurrentJob 查询出结果的吗? 怎么感觉越来越糊涂了呢。
正怒月神 2016-06-15
  • 打赏
  • 举报
回复
那么,我只能说。。你看看你现在的sql server和config里配置的是不是同一个服务器上数据库?
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 16 楼 hanjun0612 的回复:
DataRow dr = dt.NewRow();
dt.Rows.Add(dr);
放到while里面呢?
改成
while (sdr.Read())
{
DataRow dr = dt.NewRow();
dr[0] = sdr.GetString(sdr.GetOrdinal("制令号"));
dr[1] = sdr.GetInt32(sdr.GetOrdinal("工单ID")).ToString();
dr[2] = sdr.GetString(sdr.GetOrdinal("物料编码"));
dr[3] = sdr.GetString(sdr.GetOrdinal("物料名称"));
dr[4] = sdr.GetString(sdr.GetOrdinal("物料规格"));
dr[5] = sdr.GetDecimal(sdr.GetOrdinal("工单计划数量")).ToString();
dr[6] = sdr.GetDecimal(sdr.GetOrdinal("工单完工数量")).ToString();
dr[7] = sdr.GetDateTime(sdr.GetOrdinal("开始日期")).ToString();
dr[8] = sdr.GetDateTime(sdr.GetOrdinal("结束日期")).ToString();
dt.Rows.Add(dr);
}
这样试试

早就试过了,不行的,结果是一样的
正怒月神 2016-06-15
  • 打赏
  • 举报
回复
DataRow dr = dt.NewRow(); dt.Rows.Add(dr); 放到while里面呢? 改成 while (sdr.Read()) { DataRow dr = dt.NewRow(); dr[0] = sdr.GetString(sdr.GetOrdinal("制令号")); dr[1] = sdr.GetInt32(sdr.GetOrdinal("工单ID")).ToString(); dr[2] = sdr.GetString(sdr.GetOrdinal("物料编码")); dr[3] = sdr.GetString(sdr.GetOrdinal("物料名称")); dr[4] = sdr.GetString(sdr.GetOrdinal("物料规格")); dr[5] = sdr.GetDecimal(sdr.GetOrdinal("工单计划数量")).ToString(); dr[6] = sdr.GetDecimal(sdr.GetOrdinal("工单完工数量")).ToString(); dr[7] = sdr.GetDateTime(sdr.GetOrdinal("开始日期")).ToString(); dr[8] = sdr.GetDateTime(sdr.GetOrdinal("结束日期")).ToString(); dt.Rows.Add(dr); } 这样试试
zz72238119 2016-06-15
  • 打赏
  • 举报
回复
引用 14 楼 hanjun0612 的回复:
SP_I_FAT_GetCurrentJob这个存储过程,直接在sql里按照你的意思,查询2条结果一样吗?

对的
加载更多回复(4)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧