关于二个表的数据查询读取的方法

xzhld 2008-05-30 12:01:43
我是新手,接触.net不久,现在做一个WEB的查询,碰到一个很头痛的问题,望前辈指点!!!!!!!
有二个表,一个表是另一个表的字段名,
1、如何动态读取这个表的内容做为列的名字?
2、通过这些字段名去读取另一个表的这个字段的内容?
3、并显示出来?
...全文
125 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xzhld 2008-06-05
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 honey52570 的回复:]
先把第一表数据取出来 C#先处理

然后构造sql语句去查询
[/Quote]

谢谢大家,今天回贴,不好意思!
我用一个Table控件;
后台
    string strU1 = "SELECT name,field_name FROM xmzd ";
DataSet ds = StuCharg.GreatDs(strU1);

TableRow TabRow = new TableRow();
for (int I =0; I <= ds.Tables[0].Rows.Count - 1; I++)
{
TabRow = new TableRow();
TableCell TabCell = new TableCell();
TabCell.Text = ds.Tables[0].Rows[I]["name"].ToString();
TabCell.Width = 100;
TabRow.Cells.Add(TabCell);
Tb_gz.Rows.Add(TabRow);
string gzdm = ds.Tables[0].Rows[I]["field_name"].ToString();
string strU2 = "SELECT " + gzdm + " FROM gzmxb WHERE rydm='1001'";
DataSet ds1 = StuCharg.GreatDs(strU2);
TabCell = new TableCell();
TabCell.Text = ds1.Tables[0].Rows[0][0].ToString();
TabRow.Cells.Add(TabCell);
Tb_gz.Rows.Add(TabRow);
} 
完成了,只是不好看呵呵!有什么办法让它好看点,我这是二列显示。

chengqscjh 朋友的我还没有试,因为是新手有些东西不是很会比如:存储过程,只会简单的看到难一点就头痛,呵呵!
总之谢谢大家!
xzhld 2008-05-31
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Athickhead 的回复:]
你把表结构写出来,再写几条记录出来看看。这样说来说去太抽象了。
[/Quote]
第一表的结构是:
1 xm 姓名
2 xh 学号
3 cj 成绩
....
....
....
第二表为
id xm   xh   cj .............
1 王五 0001  60

就是这样的,但是的记录有增有减,哪么第二表的字段名也是有增有减,二张表导入前在他本服务器上是动态生成
chengqscjh 2008-05-31
  • 打赏
  • 举报
回复
1.估计你的表设计的不合理,将另外的表名作为一个字段.
2.如果硬是这样的话,你可以读取那个字段名后,作为变量,查询数据库

declare @tb_name char(50),@sql varchar(500)
set @tb_name='t_user'//查询字段后获得的表名传递即可
set @sql='select * from '+@tb_name+''
exec(@sql)

honey52570 2008-05-31
  • 打赏
  • 举报
回复
先把第一表数据取出来 C#先处理

然后构造sql语句去查询
chengqscjh 2008-05-31
  • 打赏
  • 举报
回复
上面为动态的构造了表结构
1、如何动态读取这个表的内容做为列的名字?
2、通过这些字段名去读取另一个表的这个字段的内容?
3、并显示出来?
------------------------------------------
1.sql='select ziduan from tb'构造ds
2.foreach遍历循环第ds的行,string field=ds.tables[0].rows[0][i].tostring()
3.sql
declare @s char(50)
set @s='ziduan'//为上面的field
select * from tb
declare @s1 varchar(8000)
set @s1 = 'select '+@s+' from tb'
exec(@s1) '
----------------
上面的为sql代码,放在.net前台中可能要变
如果在前台不行,则将1.2变化为数据库的游标读取即可,在后台直接完成
4.在前台的话,显示的时候不知ds.tables[0].rows[0]['"+field+"'].tostring()这句是否成立,如果成立那就可以直接写,否则在前台不好处理
chengqscjh 2008-05-31
  • 打赏
  • 举报
回复

create table tb
(
id int identity(1,1),
ziduan varchar(10)
)
insert into tb(ziduan) values('xm')
insert into tb(ziduan) values('xh')
insert into tb(ziduan) values('cj')
insert into tb(ziduan) values('dz')
go

select * from tb

declare @s varchar(8000)
set @s = 'create table test2(id varchar(20)'
select @s = @s + ',' + ziduan + ' varchar(10)' from tb
set @s = @s + ')'
exec(@s)
print @s

select * from test2

drop table test2
drop table tb



sdyqingdao 2008-05-30
  • 打赏
  • 举报
回复
另外一个表的结构不固定?不太可能吧?
_西瓜皮_ 2008-05-30
  • 打赏
  • 举报
回复
这个好像于。NET没关系吧。
使用什么数据库?如果是SQL之类的,就可用TSQL语句写出来即可。
amandag 2008-05-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Athickhead 的回复:]
你把表结构写出来,再写几条记录出来看看。这样说来说去太抽象了。
[/Quote]
_西瓜皮_ 2008-05-30
  • 打赏
  • 举报
回复
你把表结构写出来,再写几条记录出来看看。这样说来说去太抽象了。
xzhld 2008-05-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ccaakkee 的回复:]
写个存储过程 吧表名作为参数
[/Quote]
呵呵,存储过程我只知道一些添加、删除等一些简单的语句,不知道这个怎么写,
对了第一表中有二个字段,一个字段是第二个表的表结构,另一个字段是中文。比如:xh 姓名

xzhld 2008-05-30
  • 打赏
  • 举报
回复
怎么具体操作,二个表没有关联,用什么方法显示?
xzhld 2008-05-30
  • 打赏
  • 举报
回复
这二个表是从另一服务器导过来的,他本来是通过程序生成第一个表,在通过程序把第一个表做为表结构生成第二个表的字段,在加数据进去,我现在只要查询第二表的内容。
但是第一表每个月的内容不同,生成的字段不同,当然只是少数几,可能是这个月少一二个字段,下一个月多出一二个字段,
我现在是,把第一个表有可能出现的字段全加进去,这样以后做维护这块好搞点。
直接查询第二表的内容好办,怎么样让字段名能跟第一个表对上号?
muli7108 2008-05-30
  • 打赏
  • 举报
回复
1、如何动态读取这个表的内容做为列的名字?
2、通过这些字段名去读取另一个表的这个字段的内容?
3、并显示出来?

其实很简单。
你首先读取字段名表,语句很简单select * from 字段名表
然后根据获得的列名构建查询语句。然后再去查找另一个表的数据
显示出来就可以啦
ccaakkee 2008-05-30
  • 打赏
  • 举报
回复
写个存储过程 吧表名作为参数
kong521 2008-05-30
  • 打赏
  • 举报
回复
如果今天这个结构
id int
name nvarchar 25
pwd nvarchar 18
明天
id int
name int
pwd nvarchar 18
后天
id int
name nvarchar 25
pwd int
那我想没法写程序了
kong521 2008-05-30
  • 打赏
  • 举报
回复
为什么表结构会不固定呀
不明白了
表不是先建好吗
难道你在程序里建表
比如建好一表
id int
name nvarchar 25
pwd nvarchar 18
你的表不是先建好的吗
表在数据库建好后就是固定的了

62,266

社区成员

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

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

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

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