freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于c20代碼生成器的研究與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-01-04 11:07 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 Exception ex){ = 。 王佳琪 :基于 C 的代碼生成器的研究與實(shí)現(xiàn) 8 (, 出錯(cuò) , , )。 } //關(guān)閉連接 finally{ if ( == ) ()。 } oSqlConnection = null。 } 因?yàn)?Access 同 SQLServer 連接相似,這里不再贅述。 從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)表 數(shù)據(jù)庫(kù)連接成功后,點(diǎn)擊確定,這是啟動(dòng)數(shù)據(jù)表的提取功能。 大家知 道,數(shù)據(jù)庫(kù)的表結(jié)構(gòu)一般都是存儲(chǔ)在系統(tǒng)表里的,針對(duì)不同的數(shù)據(jù)庫(kù),獲取方式也不一樣,我這里只是介紹針對(duì) SQL Server 2020 的 SQL。 獲取數(shù)據(jù)庫(kù)列 表 針對(duì) SQL2020,對(duì)于所有的數(shù)據(jù)庫(kù),都存在系統(tǒng)表 “sysdatabases” 中,獲取起來(lái)比較簡(jiǎn)單 select * from sysdatabases where name not in (amp。apos。masteramp。apos。,amp。apos。modelamp。apos。,amp。apos。msdbamp。apos。,amp。apos。tempdbamp。apos。) where后面的 語(yǔ)句是為了不獲取 SQL的系統(tǒng)數(shù)據(jù)庫(kù), 用戶 可以不加條件,就能獲取所有數(shù)據(jù)庫(kù)了 。 數(shù)據(jù)庫(kù)的此種獲取可能比較容易,然而我們?yōu)榱烁奖愕拇a生成要將數(shù)據(jù)庫(kù)進(jìn)行串行化,然后再進(jìn)行提取,似乎就有些困難了。 下面以 Access 為主,由淺入深講解數(shù)據(jù)的提?。? 測(cè)試連接成功后,點(diǎn)擊確定按鈕,開(kāi)始數(shù)據(jù)庫(kù)結(jié)構(gòu)信息的提取,提取時(shí),再次檢測(cè)數(shù)據(jù)庫(kù)的連接,以防止用戶沒(méi)有測(cè)試連接而直接提取數(shù)據(jù)表,再次提示:使用連接字符串方式連接數(shù)據(jù)庫(kù)。當(dāng)你選擇以密碼登陸或普通登錄時(shí),對(duì)應(yīng)的連接字符串會(huì)不相同。連 接 成 功 后 , 打 開(kāi) 數(shù) 據(jù) 庫(kù) , 我 們 使 用 的 是 Access 的 數(shù) 據(jù) 庫(kù) , 所 以 調(diào) 用GetAccessDatabase()。當(dāng)然在提取前仍然進(jìn)一步確認(rèn)。確認(rèn)后,下一步調(diào)用: (Data Base , )。提取數(shù)據(jù)表。具體代碼如下: public CodGenProject LoadDatabase(DataBaseType dataBaseType, string connectionString) { //建立項(xiàng)目 CodGenProject codGenProject = new CodGenProject()。 //初始化 ProjectName = CodGenProject1。 Directory = 。 ConnectionString = connectionString。 TablesClasses = new TableClassCollection()。 switch (dataBaseType) 2020 屆網(wǎng)絡(luò)工程專(zhuān)業(yè)畢業(yè)設(shè)計(jì) (論文 ) 9 { //數(shù)據(jù)庫(kù)選擇 case : //表類(lèi) TablesClasses = (connectionString, (connectionString))。 DataBaseType = 。 UseStoredProcedure = false。 break。 case : TablesClasses = (connectionString, (connectionString))。 DataBaseType = 。 UseStoredProcedure = true。 break。 } return codGenProject。 } 首先進(jìn)行初始化配置,包括項(xiàng)目名,目錄等,然后開(kāi)始數(shù)據(jù)的提取,數(shù)據(jù)的提取分為兩種:表的提取和表關(guān)系的提取。其中表的提取如下: public static TableClassCollection GetTables(string ConnectionString,ListRelation Relations)//提供對(duì)列表的搜索、排序和操作 { TableClassCollection result = new TableClassCollection()。 OleDbConnection oOleDbConnection = new OleDbConnection(ConnectionString)。//設(shè)置數(shù)據(jù)源的連接為打開(kāi)的 ()。 //內(nèi)存中數(shù)據(jù)的一個(gè)表 DataTable oDataTable = (tables)。 //返回?cái)?shù)據(jù)源的架構(gòu)信息 foreach (DataRow Table in ) //DataTable 中的 每 一行數(shù)據(jù) { if (Table[TABLE_TYPE].ToString() == TABLE) { TableClass oTableClass = new TableClass()。 = Table[Table_Name].ToString()。 = (Table[Table_Name].ToString())。 = GetColumnsPropertiesOfTable(oOleDbConnection, , 王佳琪 :基于 C 的代碼生成器的研究與實(shí)現(xiàn) 10 Relations)。 (oTableClass)。 } } ()。 return result。 } 此代碼中將每一行數(shù)據(jù)表及屬性序列化,然后提取。 public static ListColumnProperty GetColumnsPropertiesOfTable(OleDbConnection oOleDbConnection, string TableName, ListRelation Relations) { ListColumnProperty result = new ListColumnProperty()。 //從數(shù)據(jù)源讀取數(shù)據(jù)行 OleDbDataReader oOleDbDataReader = new (SELECT * FROM [ + TableName + ], oOleDbConnection).ExecuteReader()。 DataTable oDataTableDetail = ()。 //描述列元數(shù)據(jù) string[] Restrictions = { null, null, TableName }。 DataTable oDataTableIsNullable = (Columns,Restrictions)。 foreach ( oDataRow in ) (GetColumnProperty(TableName, oDataRow,getIS_NULLABLE(oDataTableIsNullable,oDataRow[ColumnName].ToString()),Relations))。 ()。 return result。 } 下面是表關(guān)系的提取,主要是主鍵和外鍵等關(guān)系。 下面的語(yǔ)句中,只要代入不同的表 /視圖名,就 可以獲取該表的所有字段名字、字段長(zhǎng)度、字段類(lèi)型、字段說(shuō)明、字段是否允許為空、是否主鍵、是否自增長(zhǎng)字段等。 代碼如下: 首先進(jìn)行查找與判斷: foreach (Relation oRelation in Relations) { if ( == TableName amp。amp。 == ) { = true。 = 。 = ()。 2020 屆網(wǎng)絡(luò)工程專(zhuān)業(yè)畢業(yè)設(shè)計(jì) (論文 ) 11 = 。 = ()。 } } return oColumnProperty。 } 接下來(lái)為表關(guān)系的提?。? public static ListRelation GetRelations(string ConnectionString) { OleDbConnection oOleDbConnection = new OleDbConnection(ConnectionString)。 //打開(kāi)數(shù)據(jù)庫(kù)連接 ()。 ListRelation oRelations = new ListRelation()。 string[] sRestrictions = { null, null, null }。 oDataTable = (n_Keys, sRestrictions)。 //遍歷每一行數(shù)據(jù)表 foreach ( oDataRowForeign in ) { //序列化 Relation oRelation = new Relation(oDataRowForeign[FK_TABLE_NAME].ToString(), oDataRowForeign[FK_COLUMN_NAME].ToString(), oDataRowForeign[PK_TABLE_NAME].ToString(), oDataRowForeign[PK_COLUMN_NAME].ToString())。 (oRelation)。 } ()。//關(guān)閉數(shù)據(jù)源的連接 return oRelations。 } 數(shù)據(jù)表的結(jié)構(gòu)顯示 將數(shù)據(jù)表的結(jié)構(gòu)信息以樹(shù)結(jié)點(diǎn)的形 式顯示在代碼生成器里,以便用戶對(duì)數(shù)據(jù)表的操作。 //初始化: public class TableClassTreeNode : TreeNode { public TableClassTreeNode(string sText) 王佳琪 :基于 C 的代碼生成器的研究與實(shí)現(xiàn) 12 { = 0。 = 0。 = 。 = sText。 } } public void PostTables(ListTableClass TablesClasses) { ()。//刪除所有樹(shù)節(jié)點(diǎn) foreach (TableClass oTableClass in TablesClasses) { TableClassTreeNode oTableTreeNode = new TableClassTreeNode()。 foreach (ColumnProperty oColumnProperty in ) {
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1