关于数据库访问的一个问题,我想先根据名称查出名称表中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();
...全文
196 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
  • 打赏
  • 举报
回复
1.鲜花展示以及用户模块:分别针对消费者,店长,总经理等不同角色进行不同页面,与库存表相关联 (1)针对消费者展示花的文字信息,以及图片,并展示购买按钮,选择分店进行下单。 (2)针对店长角色,在花的展示页面显示新增、修改、下架按钮,针对下架的商品店长有权限在待上架中操作鲜花上架。 (3)针对总经理,只展示鲜花展示页面,不显示任何操作。 (4)数据库查询出来的数据返回前台,将鲜花名称,花语,价格使用foreach循环放入div,展示到前台页面。(5)使用c:if标签判断登录用户角色,展示角色对应按钮。 (6)通过修改鲜花状态的字段来实现鲜花上下架功能。 (7)vip购买,显示折扣并显示折后价,普通用户没有。 (8)店长对本店客户的信息维护,总经理对所有店的客户的信息维护。 2.分店模块:与订单表,员工表相关联 (1)针对分店进行增删该查。 (2)在新增分店时指定分店店长,指定人员是从员工表中查出的非店长员工, 指定后要关联新增的分店Id并且要更改该员工对应的角色表。 (3)更改分店店长,指定的人员是从当前的分店中找出的,并且在指定新店长后,需要将原店长的角色指定回普通员工,这些涉及4表的更改。 3.员工以及前台页面模块:分别关联用户表,分店表(1)针对员工进行的增删改查。 (2)总经理登录可以看到所有分店的员工,分店店长登录只能看到自己店面的员工。 (3)可以调动员工到不同的分店,可以针对员工进行请假,请假的同时,工作天数会少一天,还有一个开除员工的选项。 (4)加入httpclient调用天气的接口,使用了H5和easyui来美化前台的皮肤。 4.库存管理以及前台页面模块:分别关联订单表,分店表,员工表,角色表,鲜花表 (1)不同角色登录可以看到不同的库存,总经理登录可以看到所有分店所有花材的库存,而分店店长登录只能看到本店花材的库存。(2)店长登录可以针对鲜花表增加的鲜花进行库存的新增。 (3)对外开放鲜花的webservice接口,添加时间控件的小部件。 (4)Bug的查找以及页面的美化。 5.订单以及javamail、POI模块:分别关联分店表,库存表,员工表,用户表,顾客表,供应商表,花材表,分为供应商订单和顾客订单 (1)顾客订单,顾客新增时可以新增鲜花订单,通过分店以及花材Id定位到库存,顾客可以进行订单的修改和退货。 (2)店长登录看到顾客订单后,确认发货顾客订单就不可以修改,同时库存也会相应减少。 (3)店长登录可以新增供应商订单,同时可以修改和退货。 (4)供应商登录可以看到订单,发货后相应库存会增加。 (5)顾客订单新增时,会判断用户是否为VIP来确定订单金额,并且会针对分店库存进行订单数量限定。 (6)POI报表打印以及javaMail发送邮件功能。 6.数据分析模块:关联库存表,分店表,订单表,员工表,用户表,角色表 (1)店长登录时,看到的所有数据,库存,销售金额,销售数量都是以本店的花朵为基础进行的查询。 (2)经理登录时,看到的所有数据是以分店为基础进行的查询。 7.供应商以及mongoDB模块:关联了供应商表,用户表,角色表 (1)进行普通的增删该查,条件查询。(1)进行普通的增删该查,条件查询。 (2)在spring中集合mongoDB,通过AOP切点切入mongoDB。 (3)针对log记录进行查询,可以查询正常以及异常的日志状态,以及时间区间,名字条件查询。 8.登陆和注册模块:关联了用户表,角色表,顾客表,员工表,供应商表 (1)注册时会选择需要注册的角色,供应商注册时会需要验证邮箱。 (2)任何角色注册时,都会进后台判断真实信息是否可以匹配,可以匹配才能注册。

62,041

社区成员

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

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

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

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