还是不行:如何把英文列名自动显示成中文?

MasterLRC 2003-08-21 03:07:27
请教各位大侠,我在用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
不能使用空白的对象或列名。如果必要,请使用一个空格。
......
请问各位这是怎么回事?
...全文
129 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
MasterLRC 2003-08-22
  • 打赏
  • 举报
回复
各位有时间到我的贴子:
http://expert.csdn.net/Expert/topic/2175/2175302.xml?temp=.5742456
给个意见,小弟将感激不尽!
txlicenhe 2003-08-22
  • 打赏
  • 举报
回复
谢了
zjcxc 2003-08-22
  • 打赏
  • 举报
回复
谢谢.
流梓 2003-08-22
  • 打赏
  • 举报
回复
这样试试!
select tab_name as 表名........from Table
CrazyFor 2003-08-22
  • 打赏
  • 举报
回复
:)
acewang 2003-08-21
  • 打赏
  • 举报
回复
不好意思,你这么快就找到错了
acewang 2003-08-21
  • 打赏
  • 举报
回复
zjcxc(邹建)这位大牛写的一般不会出错,你再找找
MasterLRC 2003-08-21
  • 打赏
  • 举报
回复
问题解决,是偶输错表名了。
上次回答的几位大哥,过来再给分!

62,025

社区成员

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

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

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

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