


摘? 要: 在數據庫設計時為了使數據庫能夠與操作系統的環境兼容,通常將數據庫的字段名用英文來表示,但在數據顯示時又希望以中文來顯示字段名。雖然可以在Select語句中通過指定別名來解決這個問題,但如果數據庫表名很多,需要查詢也很多時,這種方法很麻煩而且沒有通用性。因此,提出將英文字段名和對應的中文字段名預存于數據庫中,當需要顯示時,通過設計對應的Web構件,將要顯示的英文字段名與預存數據庫中的中文進行匹配來顯示。實踐證明,用這種方法能很好地解決了用中文顯示英文字段名的問題。
關鍵詞: 數據庫; 英文字段名; 顯示構件; 自動翻譯
中圖分類號:TP392? ? ? ? ? 文獻標志碼:B? ? ?文章編號:1006-8228(2019)12-64-03
The implementation of automatic translation of English field name into Chinese
Liu Yousheng
(Computer Department, Guangdong Songshan Polytechnic College, Shaoguan, Guangdong 512126, China)
Abstract: In order to make the database compatible with the environment of the operating system, the field name of the database is usually expressed in English, but when displaying the data, the field name is expected to be displayed in Chinese. Although the alias can be specified in the Select statement, this method is troublesome if there are many table names in the database and many queries are needed. In order to solve this problem, it is proposed to save the English word names and corresponding Chinese field names in the database. When a field name needs to be displayed,? the English field name can be matched to the Chinese one in the database by designing the corresponding Web components. Practice has proved that this method can realize the automatic display of English fields in Chinese, which solves the problem of Chinese display.
Key words: database; English field name; display component; automatic translation
0 引言
在Web應用程序的設計中,數據庫是支撐應用程序的重要部分,因此很多應用程序都需要數據庫作為后臺數據管理用。在數據庫的設計時,為了使數據庫能夠與操作系統的環境兼容,通常將數據庫的字段名用英文來表示,但這樣存在一個問題:當顯示字段名時,如果沒有特殊的處理,數據庫中字段名原來設計的是英文,顯示出來的字段名仍然是英文,對用戶來說,有時很難理解。
為了使中文用戶能夠理解英文字段的含義,這就需要將英文字段轉化為中文顯示,通常的設計方法是在Select語句中使用別名來顯示中文:Select ClassName as菜單名稱,content as欄目內容,Script as內容描述,FileName as連接文件名,FileTitle as文件標題from TreeMenuGJK。
這樣解決了將英文字段顯示為中文的問題,但如果要將某個字段綁定到一些控件(如DropDownList控件)上顯示時,控件顯示出來的還是英文。這個問題在軟件開發很多地方都會出現。特別是當開發一個大型系統,數據庫中的表特別多,字段名又五花八門,每個要顯示、查詢地方都要人工轉換語句是件很麻煩的事情,而且容易出錯,那么,如何將英文字段自動以中文來顯示,對于這個問題我們以下將詳細介紹解決方案。
1 解決方案
將英文字段自動翻譯為英文字段的解決方案如圖1所示。
該方案包括兩部分:數據庫設計和數據庫顯示。
數據庫設計部分,按常規設計方法先設計數據庫,然后在此基礎上,增加一個將英文字段自動翻譯為英文字段的數據表。
數據庫顯示部分,增加一個“字段翻譯構件”,利用“字段翻譯構件”將英文自動翻譯為中文。
2 解決方案的實現
2.1 數據庫的設計
在設計數據庫時,我們還是按以前的常規方法設計,數據表的字段名還是使用英文,只是在設計數據庫時,增加一個中英文字段名對照表,如表名為“FieldCHs_Eng”,表的結構對照如表1所示。
表以三個字段組成:ID、FieldName和Field Name Chinese,其中Field Name是英文字段名,Field Name Chinese是英文字段名對應的中文名稱。
設計好之后,將所有數據庫設計中的英文字段名和對應的中文名稱通過添加記錄程序,添加到“FieldCHs_Eng”表中。
2.2 與自動翻譯相關構件的設計
有關Web構件的設計思路、方法,在文獻[1]和文獻[2] 中有詳細描述,為此我們參考文獻[1] 和文獻[2]的方法,以構件的設計思路,分別將SQL語句中的英文字段自動顯示為中文和數據庫中的英文字段名顯示為中文,以下是實現的相關構件核心代碼。
⑴ 將SQL語句中的英文字段自動用別名轉換為中文名稱顯示構件的設計
如果SQL查詢語句中包括英文字段,在沒有使用別名的情況下,要將SQL查詢語句中的英文字段中文顯示,需要設計一個轉化構件,構件名稱為EnglishSQLToChineseSQL,它的功能是將SQL語句中英文字段名自動轉換為中文,構件核心代碼如下:
public string EnglishSQLToChineseSQL(string C_ETable, string EnglishFiledNameSQL)
{
……
if (EnglishFiledNameSQL.IndexOf(objreader["FieldName"].ToString()) >= 0)
{
EnglishFiledNameSQL = EnglishFiledNameSQL.Replace(objreader["FieldName"].ToString(), objreader["FieldName"].ToString()+" as " + objreader["FieldNameChinese"].ToString());
}
return EnglishFiledNameSQL;
}
其中參數C_ETable為中英文對照表,EnglishFiledNameSQL為英文字段名顯示的SQL語句。
使用方法:
engSQL="Select ClassName, content, contentScript, FileName, FileTitle from TreeMenuGJK";
SQL = myud.EnglishSQLToChineseSQL("FieldCHs_ Eng", engSQL);
這樣將英文SQL語句engSQL中的字段名自動用As 別名轉換成中文名稱,如上述語句得到:
Select ClassName as菜單名稱,content as欄目內容,content as欄目內容Script as內容描述,FileName as連接文件名,FileTitle as文件標題from TreeMenuGJK
⑵ 從中英文字段對照表中,讀取英文字字段名,返回中文字段名構件GetChineseFieldValue的設計
構件名稱為GetChineseFieldValue,它的功能是從中英文字段對照表中,讀取英文字字段名,返回中文字段名,構件代碼如下:
public string GetChineseFieldValue(string EnglishFieldvalue,string Tablename)
{ string SQL = "Select * from " + Tablename + " where FieldName='" + EnglishFieldvalue+"'";
……
getValue=objreader["FieldNameChinese"].ToString();
……
return getValue;
}
其中,參數EnglishFieldvalue為英文字段名,Tablename為中英文對照表名。
使用方法:
在需要顯示字段名的地方,用函數GetChineseFieldValue進行轉換,如在連接并打開數據庫后,創建objreader對象,然后通過objreader對象顯示字段名的語句是:
objreader.GetName(i)
這樣顯示的字段名是英語,將上述語句修改成:
GetChineseFieldValue(objreader.GetName(i), "FieldCHs_Eng")
這樣顯示的字段名就是中文了。
⑶ 通用數據顯示構件DispLineData、數據綁定構件的設計(略)
3 自動翻譯構件的測試和使用
⑴ 自動翻譯英文SQL語句為中文別名
創建Web應用程序,創建測試頁Test1.aspx,在測試頁面中添加一個Literal控件即可。
UserData myud = new UserData(); //在事件代碼中創建構件類的實例。
然后在Page_Load事件中加入以下代碼:
string SQL = "Select ClassName, content, contentScript, FileName, FileTitle from TreeMenuGJK";
Literal1.Text = myud.EnglishSQLToChineseSQL("FieldCHs_Eng",SQL);
程序運行結果如圖2所示。
⑵ 自動翻譯英文字段名為中文,并顯示數據庫中的記錄
首先創建測試頁Test2.aspx,界面中添加一個Literal控件,然后在事件代碼中加入以下代碼:
UserData myud = new UserData();
string SQL = "Select * from TreeMenuGJK";
protected void Page_Load(object sender,EventArgse)
{
Literal1.Text =myud.DispLineData(SQL).ToString();
}
程序運行結果如圖3所示。
如果將字段綁定到DropDownList控件顯示,使用方法與上面基本一致。效果圖略。
4 結束語
本文詳細介紹了如何將英文字段名翻譯為中文來顯示的解決方案。該方案在Web應用程序的開發與設計中,很好地解決了英文字段用中文顯示的問題,加快了軟件開發速度。測試和實際使用效果良好。
參考文獻(References):
[1] 劉友生等.《基于構件的ASP.NET (C#)網站開發教程》. 北京:化學工業出版社,2011.
[2] 劉友生等.《構件化Web項目開發(ASP.NET C#)》. 北京:清華大學出版社,2011.