《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于C#的數據庫表結構報表系統的設計與實現
基于C#的數據庫表結構報表系統的設計與實現
來源:微型機與應用2013年第21期
歐 微,程 嵐,陳圣榮
(烏魯木齊民族干部學院,新疆 烏魯木齊 830002)
摘要: 為便于團隊交流與系統維護,在對表的設計結構修改后,應及時更新項目技術文檔。為克服現有方法存在的不足,在Visual Studio 2010環境下,基于C#編程語言,開發了一個針對SQL Server數據庫表結構的報表生成系統。該系統支持單表導出和批量導出兩種工作模式,支持將表結構導出到Word和Excel兩種應用接口,具有操作簡單、使用靈活和功能完善的優點,對提高團隊開發效率和技術文檔的規范性具有一定的應用價值。
Abstract:
Key words :

摘  要: 為便于團隊交流與系統維護,在對表的設計結構修改后,應及時更新項目技術文檔。為克服現有方法存在的不足,在Visual Studio 2010環境下,基于C#編程語言,開發了一個針對SQL Server數據庫表結構的報表生成系統。該系統支持單表導出和批量導出兩種工作模式,支持將表結構導出到Word和Excel兩種應用接口,具有操作簡單、使用靈活和功能完善的優點,對提高團隊開發效率和技術文檔的規范性具有一定的應用價值。
關鍵詞: SQL Server數據庫;表設計結構;報表生成

 數據庫結構設計主要包括需求分析、概念結構、邏輯結構和物理結構設計等多個階段,是一個反復探索、逐步求精的過程[1-2]。優化存儲結構、提高查詢效率,確保數據的準確性、一致性與完整性,在數據庫結構設計時,需頻繁地對表結構進行論證、修訂和優化[3-4]。為方便團隊交流與系統維護,表的邏輯結構說明是數據庫項目技術文檔不可或缺的內容,因此在對表的設計結構修改后,應及時更新表設計結構的說明文檔,其實現方法通常有兩種:一是借助數據庫設計工具(Rose、Power Designer等)導出設計結構報表,該方法集成度高且生成技術文檔相對規范,但在進入編碼開發階段后,再對表的邏輯結構修訂完善,往往只需對個別表設計結構的小幅變更,由于模板定制復雜且流程性過強,該方法的適用性與靈活性受到局限。二是在表結構修改后,采用手工修訂的方法調整開發文檔中的相應內容,該方法靈活性高,但工作繁瑣,且難以確保對表結構描述的一致性[5-6]。
 本文在Visual Studio 2010開發環境下,利用C#編程語言,針對SQL Server數據庫環境,開發了一個針對數據庫表結構的報表生成系統。該系統支持兩種工作模式:即單表模式和批量模式。顧名思義,在單表模式下,用戶通過一次操作可導出某個指定表格的設計結構;在批量模式下,系統支持一次導出數據庫中的全部或多個表格的結構屬性。同時,系統提供了相應接口,用戶可根據需要將相應數據導出到Word或Excel文檔中。限于篇幅,本文主要通過單表工作模式,介紹該系統的功能結構、實現方法及工作流程。
1 系統實現
 系統的用戶主界面如圖1所示,該系統主要包括數據庫連接模塊、屬性選擇模塊、設計結構輸出模塊、數據導出模塊等4部分。

1.1 數據庫連接模塊
 數據庫連接模塊用于與數據庫建立連接,讀取并輸出數據中包含的所有表的名稱。其中實現過程可描述為:(1)根據用戶輸入的服務器地址、數據庫名稱、用戶名及密碼,驗證其是否正確,確保連接成功;(2)在連接成功后,讀取數據中所包含的表,當操作模式批量導出時,輸出到CheckedListBox復選列表框;當操作模式為單表導出時,輸出到下拉列表,其關鍵代碼下:
cShowTableStructure sts=new cShowTableStructure();
sts.connStr=String.Format("server={0};database={1};
uid={2};pwd={3}",
serverName,dBaseName,userId,userPwd);//連接字符串
sts.sqlStr=String.Format("select*from+{0}.dbo.sysobjects
 where xtype=′U′
order by name asc",dBaseName);//查詢語句
DataTable dtable=sts.mReadTableInfors();
//讀取數據庫中的表名,返回一個DataTable
if(dtable =null)
{
   MessageBox.Show("連接成功,請選擇表格!");
   //將表格名稱添加為下拉列表的Items
   for(int i=0;i<=dtable.Rows.Count-1;i++)
   {
      string tName=dtable.Rows[i][0].ToString();
      cmb_TableName.Items.Add(tName);
      cmb_TableName.SelectedIndex=0;
    }
   btnChooseTable.Enabled=true;//允許用戶提交選擇項
 }
else{……}
1.2 屬性選擇模塊
 在用戶建立表的過程中,數據庫管理系統將保存表設計結構的信息,包括字段名、數據類型、長度、默認值及字段說明等。為方便用戶進行選擇,通過類型為CheckBox的數組ckBoxs,呈現在表設計的常用屬性,供用戶選擇。其中,序號與字段名為必選項,其他信息用戶根據需要進行選擇,默認為全選。通過條件選擇語句對SQL查詢語句的組合,實現對用戶所關心屬性的選擇性輸出,其關鍵代碼如下:
//根據用戶選擇的屬性,控制SQL查詢的輸出字段
string sqlstr="Select";
if(ckBoxs[0].Checked){sqlstr+="a.colorder N′序號′,";}
if(ckBoxs[1].Checked){sqlstr+="a.name N′字段名′,";}
if(ckBoxs[2].Checked){sqlstr+="(case when
COLUMNPROPERTY(a.id,a.name,
′IsIdentity′)=1 then′√¨?′else′′end)N′是否標識′,";}
…… ……
if(ckBoxs[9].Checked){sqlstr+="isnull(e.text,′′)N′默認值′,";}
if(ckBoxs[10].Checked){sqlstr+="isnull(g.[value],′′)AS N′字段說明′,";}
//去掉語句最后一個逗號,保證查詢語句的正確性
sqlstr=sqlstr.Remove(sqlstr.LastIndexOf(′,′),1);
1.3 表結構輸出模塊
 屬性選擇模塊實現對輸出字段與查詢條件的控制,生成了相應的SQL查詢語句。表設計結構輸出模塊的任務是利用已有的查詢語句,訪問數據庫并讀取表設計信息,然后輸出到用戶界面,其關鍵代碼如下:
cShowTableStructure sts=new cShowTableStructure()
{sqlStr=sqlstr,connStr=connstr};
DataTable dtable=new DataTable();
dtable=sts.mReadTableInfors();
if(dtable!=null)
{
   dgv_TableStructure.DataSource=dtable;
   for(int i=1;i<=dgv_TableStructure.Columns.Count-1;
i++)
   {dgv_TableStructure.Columns[i].Width=80;}
//設置DataGridView列寬
}
 其中,SQL查詢語句sqlstr由屬性選擇模塊生成,連接字符串connstr與數據庫連接模塊一致。因此,該模塊的運行流程可描述為:(1)通過實例化cShowTableStructure類,新建一個sts對象,設置連接字符串與查詢語句;(2)調用mReadTableInfors方法,讀取表結構信息,以DataTable格式返回查詢結果;(3)將查詢結果作為DataGridView控件的數據源,輸出到用戶界面。
1.4 數據導出模塊
 通過表設計結構輸出模塊,可以方便地獲取相應表所包含的字段及其屬性,為了實現數據設計與文檔整理的同步,需要將DataGridView控件中的信息導出到Excel或word文檔中,以便開發編寫開發文檔和團隊交流時使用。系統提供了兩種應用接口,用戶可根據需要將表結構輸出到Excel或word文檔。限于篇幅,本文僅介紹將表結構導出到Excel文檔的實現方法,其關鍵代碼如下:
//新建一個Excel應用,設置屬性與文檔名
Excel.Application texcel=new Excel.Application();
texcel.Application.Workbooks.Add(true);
texcel.Visible=isShowExcel;
texcel.SaveWorkspace(TableName+"表的結構");
int co_count=dgv_TableStructure.Columns.Count;
int row_count=dgv_TableStructure.Rows.Count;
//第一行合并單元格,輸出表名
string Title_End=endChar+"1";
texcel.Cells.get_Range("A1",Title_End).MergeCells=true;
texcel.Cells[1,1]=TableName+"表的設計結構";
//第二行輸出相應的字段名
for(int i=0;i<=co_count-1;i++)
{texcel.Cells[2,i+1]=dgv_TableStructure.Columns[i].
HeaderText;}
//從第三行開始,輸出表的結構信息
for(int i=0;i<row_count-1;i++){
   for(int j=0;j<=co_count-1;j++){
     if(dgv_TableStructure[j,i].ValueType==typeof
(string))
      texcel.Cells[i+3,j+1]=""+dgv_TableStructure[j,i].
Value;
     else
      texcel.Cells[i+3,j+1]=dgv_TableStructure[j,i].
Value.ToString();
    }
}
//設置Excel有效數據區域的格式
char endChar=Convert.ToChar(′A′+co_count-1);
 …… ……
content_range.Borders.LineStyle=BorderStyle.FixedSingle;
 因此,該模塊的工作流程可描述為:(1)新建一個Excel應用,設置相關屬性;(2)計算輸出到有效數據的行、列數,在第一行輸出表名稱;(3)將DataGridView控件表頭文本作為字段名,輸出到第二行;(4)從第三行開始,逐單元格輸出對應信息;(4)選擇Excel中的數據區域,設置其邊框、字體等格式樣式。
1.5 關鍵類cShowTableStructure實現

 


 在1.1節數據庫連接模塊與1.3節表設計結構輸出模塊中,都用到了一個名為cShowTableStructure的類,該類的主要功能是實現對數據庫的查詢,并將查詢結果通過一個DataTable返回。cShowTableStructure類封裝了兩個屬性(SQL查詢語句sqlStr與連接字符串connStr)及一個方法mReadTableInfors,mReadTableInfors的關鍵代碼如下:
SqlConnection conn=new SqlConnection(connstr);
SqlCommand cmd=new SqlCommand(sqlstr,conn);
DataTable dtable=new DataTable();
SqlDataAdapter sda=new SqlDataAdapter();
try
{   conn.Open();
    sda=new SqlDataAdapter(cmd);
    sda.Fill(dtable);
}
catch(Exception x)
{  ……      //異常處理}
Finally
{  ……      //資源釋放}
return dtable;
2 業務流程圖
 系統的業務流程如圖2所示,該流程可描述為:(1)選擇操作模式(單表導出或批量導出);(2)用戶輸入數據庫服務器地址(名稱)、數據庫名、用戶名和密碼;(3)系統驗證數據庫所提交信息的正確性,若通過驗證,則轉第(4)步,否則轉第(2)步;(4)讀取數據庫包含的所有表格,將表名輸出到用戶界面,用戶選擇并提交所選表格;(5)選擇對所選表需查看、輸出的結構屬性;(6)提交查詢,在用戶界面顯示查詢結果;(7)選擇導出方式,將表的設計結構導出到Word或Excel文檔。

 數據庫設計是項目開發的一項重要內容,在數據庫設計階段,開發團隊需就其表結構反復地進行論證、修訂與完善;進入編碼階段后,盡管不鼓勵對數據庫結構再進行修改,但小幅度的調整與優化往往難以杜絕。為方便團隊協作與后期維護,在對數據庫結構調整后,及時更新項目開發文檔顯得尤為重要。但在對數據庫結構改動后,手工調整或借助第三方工具重新生成說明文檔,工作繁復且難以確保對表結構描述的一致性。針對這一需求,本文開發了一個數據庫表結構自動導出系統,以方便用戶根據需要導出表的結構信息,具有小巧便捷、操作簡單的優點,將其作為團隊開發的輔助工具,能較大幅度提高工作效率。
參考文獻
[1] 何玉潔.數據庫原理與實踐教程[M].北京:清華大學出版社,2010.
[2] 王征,呂雷.SQL Server 2008中文版數據庫基礎與實踐教程[M].北京:電子工業出版社,2009.
[3] 李偉.數據完整性在數據庫應用系統的設計與實施[J].煤炭技術,2011,30(3):167-168.
[4] 朱曉輝,王杰華,石振國,等..NET下基于PowerDesigner和CodeSmith的軟件自動化開發技術[J].計算機科學,2010,37(7):156-160.
[5] 謝星星,沈懿卓.UML基礎與Rose建模實用教程[M].北京:清華大學出版社,2008.
[6] 張慶輝,邵易峰.基于Power Designer的通信裝備數據庫設計實現[J].艦船電子工程,2012(2):68-70.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲欧美日韩综合| 一本一本久久a久久精品牛牛影视| 欧美成人精品高清在线播放| 欧美日韩精品二区| 亚洲国产一区二区在线| 永久免费毛片在线播放不卡| 狠狠色狠狠色综合系列| 久久女同精品一区二区| 亚洲欧美久久久| 国产精品久久久91| 欧美精品国产| 欧美一区二区视频在线| 国产精品成人一区二区网站软件| 久久久91精品国产一区二区精品| 亚洲欧美三级伦理| 国产精品va在线播放| 久久网站热最新地址| 欧美成人免费全部观看天天性色| 亚洲国产精品欧美一二99| 国模一区二区三区| 国产一区二区三区四区五区美女| 欧美日韩亚洲视频一区| 日韩午夜在线电影| 亚洲国产99| 欧美日本亚洲| 欧美视频不卡中文| 亚洲尤物在线视频观看| 香蕉久久夜色精品国产使用方法| 欧美日韩亚洲一区在线观看| 亚洲一区中文| 国产精品成人免费视频| 噜噜噜在线观看免费视频日韩| 亚洲国产日韩在线| 亚洲天堂av电影| 亚洲国产精品成人综合| 亚洲狠狠丁香婷婷综合久久久| 国产精品日韩电影| 99综合电影在线视频| 国产一区二区三区四区在线观看| 美乳少妇欧美精品| 亚洲欧洲久久| 国产一区二区三区成人欧美日韩在线观看| 亚洲性图久久| 久久精品日韩一区二区三区| 久久久久这里只有精品| 午夜亚洲福利在线老司机| 最新国产の精品合集bt伙计| 亚洲国产成人高清精品| 狠狠做深爱婷婷久久综合一区| 欧美成人精品在线视频| 亚洲一区二区三区在线看| 国产在线不卡| 国产精品欧美久久久久无广告| 久久这里有精品视频| 亚洲一区二区三区四区五区午夜| 亚洲成色最大综合在线| 在线一区亚洲| 午夜日韩激情| 国产一区二区三区视频在线观看| 欧美一区二区三区在线免费观看| 午夜精品理论片| 一区二区三区精品| 日韩亚洲欧美在线观看| 国产欧美一区二区三区久久人妖| 久久亚洲精选| 欧美日韩国产首页在线观看| 亚洲国产日韩一级| 欧美日韩p片| 亚洲激情一区| 亚洲经典自拍| 国产日韩在线视频| 国内久久精品视频| 久久久久久久激情视频| 伊人久久男人天堂| 久久精品一区二区国产| 欧美日韩小视频| 亚洲第一页中文字幕| 先锋a资源在线看亚洲| 久久尤物视频| 夜夜嗨av一区二区三区网站四季av| 欧美在线国产| 欧美日韩国产成人在线免费| 日韩一级大片| 黄色一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 国产女主播在线一区二区| 国产欧美精品一区二区三区介绍| 国内精品久久久久久影视8| 国产精品一卡| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美亚洲三区| 亚洲第一中文字幕在线观看| 在线视频欧美日韩| 国产精品高潮呻吟久久| 黄色成人av网站| 欧美电影在线播放| 国产一区二区在线免费观看| 欧美性生交xxxxx久久久| 99精品欧美一区二区蜜桃免费| 日韩午夜激情| 欧美日韩不卡合集视频| 免费一级欧美片在线观看| 欧美老女人xx| 国产视频久久久久| 国产精品免费看久久久香蕉| 99re6这里只有精品视频在线观看| 亚洲国产欧美一区二区三区久久| 亚洲综合大片69999| 亚洲欧美福利一区二区| 国产精品久久久久久久久久直播| 亚洲制服欧美中文字幕中文字幕| 欧美一区二区三区精品电影| 亚洲电影免费观看高清完整版| 欧美激情一区二区三区高清视频| 久久精品国产第一区二区三区最新章节| 欧美不卡视频| 亚洲在线国产日韩欧美| 亚洲一区一卡| 欧美性理论片在线观看片免费| 久久精品在线观看| 亚洲激情社区| 99精品国产99久久久久久福利| 欧美日韩综合网| 欧美肉体xxxx裸体137大胆| 久久精品一区四区| 亚洲风情在线资源站| 欧美区在线播放| 一区二区三区日韩| 亚洲女性喷水在线观看一区| 国产精品影视天天线| 日韩午夜电影av| 亚洲欧美日韩另类精品一区二区三区| 一区二区欧美在线观看| 国产精品99久久久久久人| 一本一本久久a久久精品牛牛影视| 国产精品一二三| 欧美一区二区久久久| 久久av一区二区三区亚洲| 久久精品午夜| 国产精品爽爽ⅴa在线观看| 国产人妖伪娘一区91| 99re这里只有精品6| 性一交一乱一区二区洋洋av| 久久久免费精品| 性刺激综合网| 欧美日韩在线另类| 欧美成年人在线观看| 亚洲精品三级| 一区在线视频| 欧美精品一区二区在线观看| 欧美日韩在线一区二区三区| 国产日产欧美精品| 欧美精品福利| 国产日韩精品一区二区| 亚洲午夜国产一区99re久久| 欧美激情1区2区| 欧美人与性动交a欧美精品| 欧美精品偷拍| 欧美日韩一区二区高清| 欧美波霸影院| 久久久久青草大香线综合精品| 亚洲青涩在线| 久久久久久97三级| 新67194成人永久网站| 久久精品视频免费观看| 香蕉久久夜色精品国产使用方法| 欧美日韩精品免费观看视频完整| 免费观看亚洲视频大全| 国产伦理一区| 欧美国产日韩xxxxx| 亚洲愉拍自拍另类高清精品| 欧美人成在线| 欧美日韩免费观看中文| 久久精品国产欧美亚洲人人爽| 国产美女精品| 国产永久精品大片wwwapp| 性欧美暴力猛交69hd| 国内免费精品永久在线视频| 欧美三级日韩三级国产三级| 欧美精彩视频一区二区三区| 午夜在线视频观看日韩17c| 久久九九免费视频| 国产精品久久久久久av下载红粉| 国产精品无码专区在线观看| 国产视频在线观看一区二区三区| 亚洲大胆女人| 亚洲第一中文字幕| 欧美在线视频播放| 免费看精品久久片| 国产精品第三页| 亚洲一区二区三区影院| 亚洲欧洲av一区二区| 欧美日韩国产二区| 性欧美在线看片a免费观看| 亚洲国产精品黑人久久久| 欧美一区国产在线| 欧美精品综合| 久久精品夜夜夜夜久久| 99国产一区二区三精品乱码| 国产精品毛片va一区二区三区| 欧美母乳在线| 亚洲欧美精品一区| 99这里只有精品| 一区二区在线观看av| 欧美精品videossex性护士| 激情小说亚洲一区| 国产精品嫩草影院一区二区| 亚洲免费小视频| 亚洲素人在线| 欧美超级免费视 在线| 午夜精品久久久久久久| 欧美国产综合| 欧美激情视频一区二区三区不卡| 国产精品专区h在线观看| 欧美日韩一卡二卡| 国产精品视频福利| 欧美精品在欧美一区二区少妇| 国产精品国产三级国产aⅴ浪潮| 狠狠色香婷婷久久亚洲精品| 亚洲天堂久久| 久久精品视频亚洲| 噜噜噜91成人网| 亚洲人成在线播放| 欧美中文在线观看| 久久er精品视频| 欧美色图天堂网| 国产欧美丝祙| 国产精品网站在线播放| 亚洲片在线资源| 欧美日韩免费视频| 国产精品草莓在线免费观看| 在线观看亚洲| 国产日韩在线不卡| 亚洲成人原创| 国产精品福利片| 欧美专区在线观看| 亚洲欧美日本国产专区一区| 欧美午夜理伦三级在线观看| 亚洲黄一区二区| 毛片av中文字幕一区二区| 欧美一区三区三区高中清蜜桃| 国产一区二区三区在线观看视频| 欧美中文字幕精品| 久久精选视频| 国产一区二区三区四区在线观看| 亚洲一区二区三区777| 欧美日韩一区二区免费视频| 日韩视频免费观看高清在线视频| 伊人男人综合视频网| 尤物网精品视频| 亚洲婷婷综合久久一本伊一区| 久久久久欧美| 亚洲精品在线观| 国产一区日韩欧美| 欧美日韩免费视频| 香蕉久久久久久久av网站| 亚洲综合电影| 欧美日本乱大交xxxxx| 欧美三级电影一区| 亚洲欧美一区二区精品久久久| 亚洲一区在线直播| 欧美一区二区视频网站| 裸体一区二区三区| 国产日韩精品一区二区浪潮av| 国产欧美不卡| 欧美午夜精品久久久久久孕妇| 欧美日韩亚洲一区在线观看| 一区二区三区在线高清| 国产精品私人影院| 蜜桃av综合| 欧美大片免费久久精品三p| 国产精品国产三级国产普通话99| 久久影视三级福利片| 国产欧美视频一区二区| 久久久久天天天天| 午夜亚洲福利在线老司机| 美女视频网站黄色亚洲| 日韩午夜黄色| 欧美日韩在线看| 国产精品女主播一区二区三区| 在线一区二区视频| 亚洲图片激情小说| 欧美午夜www高清视频| 欧美一区影院| 亚洲第一福利社区| 一区二区三区欧美日韩| 欧美母乳在线| 亚洲在线视频观看| 国产精品五月天| 国产精品美女一区二区| 国产精品视频男人的天堂| 久久久久久69| 亚洲女人天堂av| 欧美日韩一区二区精品| 久久狠狠亚洲综合| 好吊妞这里只有精品| 欧美成在线视频| 欧美日韩一区二区在线观看| 国产欧美一区二区三区久久人妖| 国产精品视频最多的网站| 国产精品私人影院| 久久久久久久一区二区| 亚洲欧洲美洲综合色网| 国产精品高潮在线| 欧美一区二区三区啪啪| 国产午夜精品一区二区三区欧美| 国产精品男女猛烈高潮激情| 久久精品免费电影| 欧美国产视频日韩| 99精品视频一区二区三区| 亚洲黄一区二区三区| 老牛影视一区二区三区| 欧美一区二区在线| 欧美午夜大胆人体| 国产欧美精品日韩区二区麻豆天美| 亚洲免费久久| 亚洲午夜一二三区视频| 国语自产精品视频在线看抢先版结局| 国产亚洲欧美激情| 国产精品三级久久久久久电影| 国产欧美日韩91| 136国产福利精品导航网址| 欧美日韩午夜视频在线观看| 日韩系列欧美系列| 狠狠入ady亚洲精品经典电影| 国产午夜精品视频免费不卡69堂| 久久精品99国产精品酒店日本| 亚洲婷婷国产精品电影人久久|