在 sql server 中 用C# WinForm 程序实现循环查询的问题

在sql server 中有一个表中,表的结构是 “id” “pid" "name"‘三个字段构成,这个表是这样记录数据的:pid =0 都是顶级,id是自增长生成的;而且上一级的id 是下一级的pid。例如这组数据:
id pid name
1 0 管理部
2 0 技术部
3 1 行政组
4 2 技术组
5 4 机械队
6 5 叉车
等等。
假如问题是“知道了叉车的id ,在程序中如何实现循环判断它是哪个部门的,即pid=0的name 叫什么,最终用一个文本框显示这个pid=0的name”?

先求出叉车的pid: select pid from 表名 where id=6
再求出部门名: select name from 表名 where pid = (select pid from 表名 where id=6)
最后显示到文本框中就ok了呀追问

有你说的这么简单我就不会在这里来问大家了。
正如追问‘ zxc651666509| 一级 ’一样,我的表存入的数据为无限级的。

追答

正好最近我也在弄树形菜单这块,弄出来了,我没有明白你的意思,你能说清楚点吗?

追问

好。
我在C# winform 程序中放了个treeview 控件邦定所说的这个无限级的sql server 数据表,点击树节点能获取得该节点的id也就是数据表中的id ,知道了这个id 来查询所选节点的顶级的name即pid=0的name,最后要用一个文本框来显示name。明白?

追答

用递归呀

追问

写出代码来看看呀

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-25
你应该做成树型结构,不然你的表没有具体可以关联的,而且也限定了单一对单一的线性结构
第2个回答  2012-08-17
不是很懂你的意思?用数据库吗?select pid,name from 表直接都显示出来不行吗?在程序里你直接以表的形式获取就行!追问

在C# winform 程序中操作sql server 数据表,此表用treeview展示出来,为无限级,正如题目所说,举的数据只是一小部分,如果知道一个第七或第八个子节的id ,如何判断获取它的顶级name?懂吗?会吗???

追答

如果知道一个第七或第八个子节的id ,如何判断获取它的顶级name?顶级name是第一行的数据吗?算了。。额。。没懂你的意思。。

追问

是你不认真看题目还是我写的不清楚呢?

“”“”“”“”

看你回答像是来凑热闹一样

在sql server 中用C# WinForm 程序实现循环查询的问题
先求出叉车的pid: select pid from 表名 where id=6 再求出部门名: select name from 表名 where pid = (select pid from 表名 where id=6)最后显示到文本框中就ok了呀

winform,用c#链接 sql server。对数据库进行查询记录,增加记录,删除记录...
SqlCommand cmd = new SqlCommand(SQL, Conn);创建SqlCommand对象;cmd.ExecuteNonQuery();Conn.Close();\/\/关闭连接 ---查询,并将查询的结果绑定到 dataGridView1经行显示--- string ConnString = "Data Source=SAWYER-PC;Initial Catalog=InfoDemo;Persist Security Info=True;User ID=sa;Password=123...

c# winform中我该如果运用T-SQL语句来进行下图的循环对比
1、定义一个游标,2、循环处理 2.1 逐行取出数据(放到变量中),2.2 进行比较处理 DECLARE @vStatussysname ,@vIssend sysnameDECLARE cur_ CURSOR LOCAL FORSELECT Status, IssendFROM xxxFOR READ ONLYOPEN cur_FETCH NEXT FROM cur_ INTO @vStatus, @vIssendWHILE @@FETCH_STATUS = 0...

sqlserver能正常进入,用C# winform代码连接不上Sqlserver
你连接字符串,以及服务器名都写错了,应该是 private string dbConnStr =@"Provider=sqloledb;Data Source=.\\SQLEXPRESS;Initial Catalog=TestDB;User Id=sa;Password=413523";或者也可以用windows登录为 private string dbConnStr =@"Provider=sqloledb;Data Source=.\\SQLEXPRESS;Initial Catalog=TestDB...

C#Winform中,我在查询数据时等待时间过长,想用一个进度条显示机器正在...
首先正式查询数据之前先查询下一共有多少跳记录 count一下 这个速度应该很快的 声明一个变量 currentNum 来记录当前取到多少条数据 然后用datareader来读取数据,每读一条currentNum累加 当前进度为currentNum \/ 总条数 这样用这样进度条就可以实现了 当然要在界面上显示 肯定是要做多线程处理的 ...

在C# winform程序里往sql server 2000插入处理大量数据时,界面不能再...
你这个现象的原因是因为主线程(也就是界面线程,应用程序通过主线程响应用户的输入)在插入大量数据的时候阻塞了,不能响应用户的输入,所以看起来就像死了一样 在新的线程里做插入新数据的工作,只要启动线程就可以不用管了,同时又不会阻塞主线程 关于线程的知识,你可以稍微了解一下 只要你不主动...

C# winform DataGridView 实现重复编号数据筛选
都可以,在sql处理的话就是按编号分组,取出每组第一个身份证,然后再与你上面的做一次左连接或右连接把第一个身份证填上编号就行了,当然也可以先取到datatable里,从第二个数据开始逐项检查编号是不是与前面的相同,如果相同就置空

C#winform 同一个账号 不能同时在线(sql server)怎么实现?
,因为在LAN当中,这两个属性是唯一的,所以就可以用来作为判断条件。以记录电脑名称为例,test账号在A电脑登录,账号登录后,即写入computer_name栏位。在winform中添加一个timer控件,用来定时和数据库通讯,比如每秒CHECK登录账号的电脑名称是否和数据库中的电脑名称一致,若不一致则做出注销的操作。

C#的winform怎样能在1秒内向数据库中添加10000条数据?
下面就是一段在SQL SERVER上可以执行通过的代码,往表中插入16000行重复的数据,使用笔记本执行 也不过耗时0.3秒而已。祝你好运!假定表结构如下:CREATE TABLE [t] ([a] [int] NULL ,[b] [float] NULL ) ON [PRIMARY]declare @s datetime, @t datetime set @s=GETDATE()set nocount on i...

C# winForm程序,GridView的选中行的问题
1、for 循环语句的迭代条件,若i从0开始,那么条件将是dataGridView1.Count-1,否则抛异常 2、if 条件判断语句,条件体必须返回一个bool类型,你的代码中仅做了赋值语句,可能是你少写了一个'='吧 分析:结果还是得到相应的结果了,只是DataGridView控件在窗体程序上,若没有对其进行更新操作的话,表...

相似回答