| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 13376 人关注过本帖, 1 人收藏
标题:我的c#+winform+sql server数据库开发
只看楼主 加入收藏
cpsa3
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-2-2
收藏
得分:0 
感谢分享 支持
2012-02-03 01:53
loplee
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-2-7
收藏
得分:0 
你好,请教下老师,就是我想用DataGrid或者DataView这个控件,实现功能为从数据库表A中取出一条数据,根据这条数据动态的命名DataGrid或者DataView的列名,请问可以实现吗?
2012-02-08 14:36
songssong
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-12-18
收藏
得分:0 
回复 22楼 loplee
我的方法是从Dataset 的Datatable做起。你的想法我去试过。是可以的。不过我是把构建sql语句写也一个函数。
我感觉还是这样好。把sql 语句改写.在这里也就多写几个 字段 as 别名。
2012-02-12 19:03
songssong
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-12-18
收藏
得分:0 
找了下csdn中有现成的。我也是这相思路。

将DataTable的字段名全部翻译为中文并返回 .
2010-02-24 15:54 293人阅读 评论(0) 收藏 举报
一般在代码里想要查询并显示出一个DataTable很容易,只要将查询到的DataTable作为某个控件的DataSource就OK了,但是此DataTable的字段全部都为英文字段,怎样将其全部改为中文呢?

 

现在我已经知道各个英文字段的中文名称,且字段的翻译信息全部存为一张表,叫字段说明表(COLUMNTRANSLATION),建此表的SQL语句为:

create table COLUMNTRANSLATION

(
    ID   NUMBER(10) PRIMARY KEY,
    COLUMNNAME   VARCHAR2(50),       //字段名称
    TRANSLATION   VARCHAR2(50)         //字段对应的中文名称
)

 

自己先放几个数据进去,使这张表里有几条记录,例如:StudentName对应的是“学生姓名”。

 

那么现在我已经由一个DataTable了,它的字段名全部都为英文,我只需执行以下代码就可将其翻译过来,并返回翻译过后的DataTable:

[c-sharp] view plaincopyprint?
01./// <summary>   
02./// 将DataTable的字段名全部翻译为中文   
03./// </summary>   
04./// <param name="table">待翻译的DataTable</param>   
05./// <returns></returns>   
06.public DataTable TranslateDataTable(DataTable table)  
07.{  
08.    DataTable dt = new DataTable();  
09.    dt.TableName = "TempTable";  
10.  
11.    if (table != null && table.Rows.Count > 0)  
12.    {  
13.        //先为dt构造列信息   
14.        foreach (DataColumn column in table.Columns)  
15.        {  
16.            string name = GetColumnName(column.ColumnName);  
17.            dt.Columns.Add(name);  
18.        }  
19.  
20.        for (int i = 0; i < table.Rows.Count; i++)  
21.        {  
22.            DataRow NewRow = dt.NewRow();  
23.            DataRow row = table.Rows[i];  
24.  
25.            for (int j = 0; j < dt.Columns.Count; j++)  
26.            {  
27.                NewRow[j] = row[j].ToString();  
28.            }  
29.  
30.            dt.Rows.Add(NewRow);  
31.        }  
32.    }  
33.    return dt;  
34.}  
35.  
36./// <summary>   
37./// 得到列名称的别名   
38./// </summary>   
39./// <param name="columnName"></param>   
40./// <returns></returns>   
41.private string GetColumnName(string columnName)  
42.{  
43.    string sqlString = " Select TRANSLATION from COLUMNTRANSLATION where COLUMNNAME = '" + columnName.ToUpper() + "'";  
44.  
45.    object s = dao.ExecuteScalar(sqlString);  
46.    string name = (s == null) ? columnName : s.ToString(); //如果此英文字段有翻译,则返回其中文翻译,若无,则保留此英文翻译。   
47.    return name;  
48.}  
        /// <summary>
        /// 将DataTable的字段名全部翻译为中文
        /// </summary>
        /// <param name="table">待翻译的DataTable</param>
        /// <returns></returns>
        public DataTable TranslateDataTable(DataTable table)
        {
            DataTable dt = new DataTable();
            dt.TableName = "TempTable";

            if (table != null && table.Rows.Count > 0)
            {
                //先为dt构造列信息
                foreach (DataColumn column in table.Columns)
                {
                    string name = GetColumnName(column.ColumnName);
                    dt.Columns.Add(name);
                }

                for (int i = 0; i < table.Rows.Count; i++)
                {
                    DataRow NewRow = dt.NewRow();
                    DataRow row = table.Rows[i];

                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        NewRow[j] = row[j].ToString();
                    }

                    dt.Rows.Add(NewRow);
                }
            }
            return dt;
        }

        /// <summary>
        /// 得到列名称的别名
        /// </summary>
        /// <param name="columnName"></param>
        /// <returns></returns>
        private string GetColumnName(string columnName)
        {
            string sqlString = " Select TRANSLATION from COLUMNTRANSLATION where COLUMNNAME = '" + columnName.ToUpper() + "'";

            object s = dao.ExecuteScalar(sqlString);
            string name = (s == null) ? columnName : s.ToString(); //如果此英文字段有翻译,则返回其中文翻译,若无,则保留此英文翻译。
            return name;
        }

 

这种方法的思想是根据待翻译的DataTable构造新的DataTable:新的DataTable的每一列的列名为翻译后的中文名(若英文列名无翻译,则保留英文列名,若能翻译,则翻译过来),构造好新的DataTable的字段信息后,再一条条的把旧的DataTable的记录插入到新的DataTable中去。

 

呵呵,绕弯了...但是速度还是可以的。

2012-02-14 20:52
songssong
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-12-18
收藏
得分:0 
其实你可以写一个过程,先得到一个只有结构的DataTable  这样也就得到了字段名集合。
然后,将这些字段名翻译成你想要的(比如在数据库中)
最后构造一个sql 语句,用这条sql 语句去得到DataTable ,绑定到datagridview控件。

这样比上面的简单,也没有太大的绕弯
2012-02-14 21:10
songssong
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2011-12-18
收藏
得分:0 
为什么我的帖子没人看呀。
2012-12-17 20:44
bennyhxz
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-14
收藏
得分:0 
有人看的,自己要有信心。
2013-05-14 00:40
快速回复:我的c#+winform+sql server数据库开发
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017542 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved