关于数据库访问的一个问题,我想先根据名称查出名称表中ID,然后再根据这个ID查出价格表里面的信息,要怎么一次查询呢?

qq_35468565 2017-03-09 03:23:52
SqlConnection con = new SqlConnection("server=(local);database=test;uid=sa;pwd=123");
string s = "select ID ,名称 from 名称表 where 名称='" + txtNameCondition.Text + "';select * from 价格表 where ID=(这里面填什么?)";
con.Open();
SqlDataAdapter da = new SqlDataAdapter(s, con);
DataSet ds1 = new DataSet();
da.Fill(ds1);
con.Close();
GridView1.DataSource = ds1;
GridView1.DataBind();
...全文
197 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
大然然 2017-03-09
  • 打赏
  • 举报
回复
protected void Bind() { DataSet ds = null; if (txtNameCondition.Text == "") { ds = operation.GetPrice(); GridView1.DataSource = ds; GridView1.DataBind(); } else { SqlConnection con = new SqlConnection("server=(local);database=test;uid=sa;pwd=123"); string s = "select b.ID,a.名称,b.最新价,b.最高价,b.最低价,b.平均价,b.成本价,b.出货价,b.装调工时费,b.备注 from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称='" + txtNameCondition.Text + "'"; con.Open(); SqlDataAdapter da = new SqlDataAdapter(s, con); DataSet ds1 = new DataSet(); da.Fill(ds1); con.Close(); GridView1.DataSource = ds1; GridView1.DataBind(); } } 应该这样
大然然 2017-03-09
  • 打赏
  • 举报
回复
你代码写错了 protected void Bind() { DataSet ds = null; if (txtNameCondition.Text == "") { ds = operation.GetPrice(); } else { SqlConnection con = new SqlConnection("server=(local);database=test;uid=sa;pwd=123"); string s = "select b.ID,a.名称,b.最新价,b.最高价,b.最低价,b.平均价,b.成本价,b.出货价,b.装调工时费,b.备注 from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称='" + txtNameCondition.Text + "'"; con.Open(); SqlDataAdapter da = new SqlDataAdapter(s, con); DataSet ds1 = new DataSet(); da.Fill(ds1); con.Close(); GridView1.DataSource = ds1; GridView1.DataBind(); } GridView1.DataSource = ds; GridView1.DataBind(); } 你看见了吗? 如果你查询的话,你绑定了两次,最后一次刚好是个空的ds
qq_35468565 2017-03-09
  • 打赏
  • 举报
回复
引用 10 楼 qq_25095899 的回复:
或者你把 select b.* from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称= ’XXXX‘ 直接贴在sqlserver查询编辑器里运行一下,看看有结果没
我把GridView1.DataSource = ds; GridView1.DataBind();放在第一个if里面就正常了
大然然 2017-03-09
  • 打赏
  • 举报
回复
或者你把 select b.* from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称= ’XXXX‘ 直接贴在sqlserver查询编辑器里运行一下,看看有结果没
大然然 2017-03-09
  • 打赏
  • 举报
回复
你断点看看那个ds1里取到东西了吗?
xdashewan 2017-03-09
  • 打赏
  • 举报
回复
引用 5 楼 qq_35468565 的回复:
我改成: string s = "select b.ID,a.名称,b.最新价,b.最高价,b.最低价,b.平均价,b.成本价,b.出货价,b.装调工时费,b.备注 from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称='" + txtNameCondition.Text + "'"; 还是没数据出来呀
你直接把sql字符串截出来去数据库运行,运行有结果再看程序
qq_35468565 2017-03-09
  • 打赏
  • 举报
回复
前端是:<asp:GridView ID="GridView1" CssClass="GridView" runat="server" AllowPaging="True" CellPadding="4" ForeColor="#333333" PageSize="12" AutoGenerateColumns="False" Font-Size="12pt" Width="100%" HorizontalAlign="Center" OnPageIndexChanging="GridView1_PageIndexChanging" GridLines="None"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" /> <asp:BoundField DataField="名称" HeaderText="名称" /> <asp:BoundField DataField="最新价" HeaderText="最新价" /> <asp:BoundField DataField="最高价" HeaderText="最高价" /> <asp:BoundField DataField="最低价" HeaderText="最低价" /> <asp:BoundField DataField="平均价" HeaderText="平均价" /> <asp:BoundField DataField="成本价" HeaderText="成本价" /> <asp:BoundField DataField="出货价" HeaderText="出货价" /> <asp:BoundField DataField="装调工时费" HeaderText="装调工时费" /> <asp:BoundField DataField="备注" HeaderText="备注" /> </Columns> 然后后台绑定是: protected void Bind() { DataSet ds = null; if (txtNameCondition.Text == "") { ds = operation.GetPrice(); } else { SqlConnection con = new SqlConnection("server=(local);database=test;uid=sa;pwd=123"); string s = "select b.ID,a.名称,b.最新价,b.最高价,b.最低价,b.平均价,b.成本价,b.出货价,b.装调工时费,b.备注 from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称='" + txtNameCondition.Text + "'"; con.Open(); SqlDataAdapter da = new SqlDataAdapter(s, con); DataSet ds1 = new DataSet(); da.Fill(ds1); con.Close(); GridView1.DataSource = ds1; GridView1.DataBind(); } GridView1.DataSource = ds; GridView1.DataBind(); }
qq_35468565 2017-03-09
  • 打赏
  • 举报
回复
引用 4 楼 qq_25095899 的回复:
SqlConnection con = new SqlConnection("server=(local);database=test;uid=sa;pwd=123"); string s =“select b.* from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称=‘“+ txtNameCondition.Text + "'"; con.Open(); SqlDataAdapter da = new SqlDataAdapter(s, con); DataSet ds1 = new DataSet(); da.Fill(ds1); con.Close(); GridView1.DataSource = ds1; GridView1.DataBind(); 楼上那位朋友已经回答了,就是这样。
我检查了一下数据库里名称表有和价格表对应的ID,然后gridview中的datafield也没有和数据库有差错,但是这么改完还是没显示数据呢
qq_35468565 2017-03-09
  • 打赏
  • 举报
回复
引用 3 楼 xdashewan 的回复:
sql有链接查询啊

select b.* from 名称表 a inner join 价格表 b on a.ID = b.ID
where a.名称='" + txtNameCondition.Text + "'
我改成: string s = "select b.ID,a.名称,b.最新价,b.最高价,b.最低价,b.平均价,b.成本价,b.出货价,b.装调工时费,b.备注 from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称='" + txtNameCondition.Text + "'"; 还是没数据出来呀
大然然 2017-03-09
  • 打赏
  • 举报
回复
SqlConnection con = new SqlConnection("server=(local);database=test;uid=sa;pwd=123"); string s =“select b.* from 名称表 a inner join 价格表 b on a.ID = b.ID where a.名称=‘“+ txtNameCondition.Text + "'"; con.Open(); SqlDataAdapter da = new SqlDataAdapter(s, con); DataSet ds1 = new DataSet(); da.Fill(ds1); con.Close(); GridView1.DataSource = ds1; GridView1.DataBind(); 楼上那位朋友已经回答了,就是这样。
xdashewan 2017-03-09
  • 打赏
  • 举报
回复
sql有链接查询啊

select b.* from 名称表 a inner join 价格表 b on a.ID = b.ID
where a.名称='" + txtNameCondition.Text + "'
正怒月神 版主 2017-03-09
  • 打赏
  • 举报
回复
你不会 inner join 吗?学习一下 ado.net 内联,左联
qq_35468565 2017-03-09
  • 打赏
  • 举报
回复

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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