还是不行:如何把英文列名自动显示成中文?
请教各位大侠,我在用ASP.net 做数据库时有以下问题:
数据库中有一“Sys_Tab“表,表中存储所有表的所有字段的信息。其结构如下:
列名 类型 说明
tab_name char40 表名 主
tab_id int4 表ID号
col_name varchar 列名
col_china_name varchar 列中文名
col_type int4 列类型
col_len int4
col_id int 主
col_pk char 1
col_fk char 1
col_ok char 1
tab_china_name varchar
col_index char 1
col_null int 4
请问如何在调用并显示某个表时,自动读取“Sys_Tab 表“把表的列名显示成中文。
上次的贴子如下:
回复人: CrazyFor(太阳下山明朝依旧爬上来) ( ) 信誉:262 2003-8-19 12:04:28 得分:0
中方在哪里得到呢,你至少需要做个对照表,
Top
回复人: MasterLRC(但丁) ( ) 信誉:100 2003-8-19 12:06:55 得分:0
Sys_Tab.col_china_name就是了。
Top
回复人: happy_0325(快乐) ( ) 信誉:100 2003-8-19 12:07:36 得分:0
up,
Top
回复人: MasterLRC(但丁) ( ) 信誉:100 2003-8-19 12:09:57 得分:0
对照表 Sys_Tab 就是了,可是我不知道怎么对所有的表实现自动中文列名,用存储过程行吗?如果行请指点,多谢!
Top
回复人: zjcxc(邹建) ( ) 信誉:100 2003-8-19 12:24:29 得分:50
那要用,在查询时生成SQL语句的方法:
比如:
显示表:aa
declare @sql varchar(8000)
set @sql='select '
select @sql=@sql+'['+col_china_name+']=['+col_name+'],'
from Sys_Tab where tab_name='aa'
set @sql=left(@sql,len(@sql)-1)+' from aa'
exec(@sql)
Top
回复人: zjcxc(邹建) ( ) 信誉:100 2003-8-19 12:26:18 得分:0
做成存储过程就是这样写:
create proc p_show @tbname varchar(250)
as
declare @sql varchar(8000)
set @sql='select '
select @sql=@sql+'['+col_china_name+']=['+col_name+'],'
from Sys_Tab where tab_name=@tbname
set @sql=left(@sql,len(@sql)-1)+' from '+@tbname
exec(@sql)
Top
回复人: hqc(慢跑的风) ( ) 信誉:98 2003-8-19 12:29:08 得分:0
我们的程序一般是在存储过程中直接用as来做,如果有更好的方法当然好,于是关注,呵呵!
Top
回复人: CrazyFor(太阳下山明朝依旧爬上来) ( ) 信誉:262 2003-8-19 12:44:32 得分:20
有什么必要这样做呢?这样做在你的前台读的时候还要用中文,不是很不方便嘛,而且不利于程序移植,
Top
回复人: txlicenhe(不做技术高手) ( ) 信誉:100 2003-8-19 13:15:26 得分:30
1: 在设计表时指定描述,或用sp_addextendedproperty加入字段描述
2:用如下视图
Create view fielddesc
as
select o.name as oname, c.name as cname,convert(varchar(30),p.value) as value,p.smallid as psmallid,t.name as tname
from syscolumns c
join systypes t on c.xtype = t.xtype
join sysobjects o on o.id=c.id
left join sysproperties p on p.smallid=c.colid and p.id=o.id
where o.xtype='U'
Top
回复人: fayifu(fayifu) ( ) 信誉:100 2003-8-19 16:42:16 得分:0
UP
Top
回复人: MasterLRC(但丁) ( ) 信誉:100 2003-8-20 21:36:54 得分:0
多谢各位了,学了不少东东,结帐!
可是当使用 zjcxc(邹建)大哥的方法,我在sql查询分析器中运行:
use wealth_mis
declare @sql varchar(8000)
set @sql='select '
select @sql=@sql+'['+col_china_name+']=['+col_name+'],'
from Sys_Tab where tab_name='comp_coll_cbkpzldj'
set @sql=left(@sql,len(@sql)-1)+' from comp_coll_cbkpzldj'
exec(@sql)
后提示了堆:
服务器: 消息 1038,级别 15,状态 3,行 1
不能使用空白的对象或列名。如果必要,请使用一个空格。
服务器: 消息 1038,级别 15,状态 1,行 1
不能使用空白的对象或列名。如果必要,请使用一个空格。
......
请问各位这是怎么回事?