999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于.NET平臺的關系數據庫轉換

2008-12-31 00:00:00扈書剛
電腦知識與技術 2008年26期

摘要:.NET平臺的優勢結合XML技術,提供了關系數據庫之間轉換的可能。通過實例演示了其可行性,將SQL Server數據庫轉換為XML文件,繼而將XML文件轉換為其他關系數據庫,實現了多種關系數據庫之間的數據轉換。

關鍵詞:數據庫轉換;.NET;XML

中圖分類號:TP311.13文獻標識碼:A 文章編號:1009-3044(2008)26-1615-02

Relational Databases Conversion Based on .NET Platform

HU Shu-gang

(Dongying Vocational College, Dongying 257091, China)

Abstract: Combining the advantages of XML technology,.NET platform provides the feasibility of data conversion between relational databases. One example demonstrated the SQL Server database can be converted to an XML file, and then the XML file can be converted to other database. It has realized the data conversion between relational databases.

Key words: database conversion; .NET; XML

1 引言

網絡資源中通常包含多種格式和管理系統的關系數據庫,為了實現資源的共建共享,需要完成多種數據庫之間的數據轉換。不同的開發商采用分布式對象技術和各自的思路來實現數據庫的互操作,如OMG的CORBA技術、Sun公司的EJB/RMI和微軟的.NET技術等。

2 數據庫轉換思路

.NET是微軟公司開發的下一代基于互聯網平臺的軟件開發構想,它提供了一個全新的編程模型。該平臺建立在XML和因特網標準協議的基礎上,具有平臺獨立性和語言獨立性,它包含了強大數據庫操控能力的ADO.NET。ADO.NET編程模型由一系列的數據庫相關類和接口組成,運用ADO.NET技術,應用程序既能訪問關系型數據庫中的數據,又能訪問層次化的XML數據[1]。XML是W3C發布的通用標記語言SGML的一個簡化子集。它是一種存儲和傳輸數據的行業標準格式,普遍貫穿于.NET平臺,具有簡單性、可擴展性、互操作性和開放性等特點,其本質特點是數據獨立,它存儲的數據全部是文本,而且使用標記標示,利于網絡傳輸。XML模式提供了很強的數據類型識別功能,可正確處理各種數據類型。XML和.NET的結合為解決數據庫互操作問題奠定了基礎[2]。通過以上分析,可以在.NET平臺上,以XML為中間數據源完成多種關系數據庫之間的轉換[3]。演示示例用的操作系統是Windows XP Professional,開發平臺為Visual Studio 2005,示例用C#語言編寫。

2.1 數據庫的導入[4]

為了導入SQLServe數據庫,先用Connection對象連接數據庫,演示示例中用SqlConnection連接了服務器METC\\SQLEXPRESS的數據庫books.mdf。將數據庫讀入DataSet。DataSet對象主要存放數據庫的DataTable的對象,可以使用DataAdapter建立DataSet對象。盡管DataSet可以存儲數據,但仍需要使用DataAdapter對象來創建和初始化各種表,還需要使用Fill()方法來把查詢結果移入到DataSet中去,再將數據寫入到XML文件。關鍵源代碼如下。

String strTableName = \"books\";

String strConnection = \"server=METC\\\\SQLEXPRESS;database=books;uid=sa;pwd=;trusted_connection=yes \";

String strSql = \"select * from \" + strTableName;

SqlConnection objConn = new SqlConnection(strConnection);

SqlDataAdapter objAdapter = new SqlDataAdapter(strSql, objConn);

DataSet objDSet = new DataSet();

objAdapter.Fill(objDSet, \"temp\");

XmlTextWriter objXmlWriter;

String strtemp1 = Request.PhysicalApplicationPath;

String strpath = strtemp1 + \"newxml.xml\";

objXmlWriter = new XmlTextWriter(strpath, 1);

objXmlWriter.WriteStartDocument();

objXmlWriter.WriteStartElement(\"xml\");

for (int i = 0; i < objDSet.Tables[\"temp\"].Rows.Count; i++)

{

objXmlWriter.WriteStartElement(\"menu\");

for (int j = 0; j < objDSet.Tables[\"temp\"].Columns.Count; j++)

{

objXmlWriter.WriteAttributeString(objDSet.Tables[\"temp\"].Columns[j].ColumnName, objDSet.Tables[\"temp\"].Rows[i][j].ToString());

}

objXmlWriter.WriteEndElement();

}

objXmlWriter.WriteEndElement();

objXmlWriter.WriteEndDocument();

objXmlWriter.Close();

2.2 數據的導出[5-6]

以下演示示例是將以上創建的“newxml.xml”文件轉換為Access數據庫demo.mdb中的一個表“newxml”。首先建立與目標數據庫的連接,也就是通過OLE DB Provider提供的OleDBConnection對象建立與Access數據庫demo.mdb的連接。當然,該示例也可通過OLE DB Provider提供的其他連接數據庫的對象來連接Oracle、Sybase或DB2這樣的數據庫以及Excel表格。以下關鍵源代碼部分省略了命名空間的引用、系統自生成代碼和對數據庫中表是否建立的檢查部分。

private void TableCheck()

{ OleDbConnection oledbConn = new OleDbConnection(textBoxOleDb.Text);

Try

{ oledbConn.Open();

DataTable schemaTable = oledbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {1, 1, tableName, \"TABLE\"});

String sqlCmd = \"\";

if(schemaTable.Rows.Count < 1)

{sqlCmd = \"create table \" + tableName + \" (\";

for(int i = 0;i < dataTableXml.Columns.Count;i++)

{sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + \" char(100),\";}

sqlCmd= sqlCmd .Substring(0,sqlCmd.Length - 1) + \");\";

OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);

oledbCmd.ExecuteNonQuery();}

}

catch

{Message.Text = \"數據庫不存在或無法創建表.\";}

finally

{oledbConn.Close();}

}

private void TableInsert()

{ OleDbConnection oledbConn = new OleDbConnection(textBoxOleDb.Text);

try

{ oledbConn.Open();

foreach(DataRow dr in dataTableXml.Rows)

{ string sqlCmd = \"insert into [\" + tableName + \"] (\";

for(int i = 0;i < dataTableXml.Columns.Count;i++)

{sqlCmd = sqlCmd + dataTableXml.Columns[i].ColumnName.ToString() + \",\";}

sqlCmd= sqlCmd.Substring(0,sqlCmd.Length - 1) + \") values (\";

for(int x = 0;x < dataTableXml.Columns.Count;x++)

{sqlCmd = sqlCmd + \"'\" + dr[x].ToString().Replace(\"'\",\"''\") + \"',\";}

sqlCmd = sqlCmd.Substring(0,sqlCmd.Length - 1) + \");\";

OleDbCommand oledbCmd = new OleDbCommand(sqlCmd,oledbConn);

oledbCmd.ExecuteNonQuery();

}

}

}

3 結束語

通過以上實例,演示了以XML為中間轉換數據源,在.NET平臺上方便地完成異構關系數據庫之間的數據轉換和共享。基于.NET平臺,充分利用XML技術的優勢,來解決異構數據庫集成的問題,能夠給用戶提供一個透明的全局數據庫,方便用戶的使用,還使得系統在可擴展性、安全性、可維護性等方面有所提高。

參考文獻:

[1] Lair R, Lefbvre J.ASP.NET開發人員手冊[M].張俊,譯.北京:電子工業出版社,2002:38-39,169-193,246-488.

[2] Bray T, Paoli J, Sperberg-McQueen C M, et al.XML標準[EB/OL].[2006-08-16].http://www.w3.org/TR/2006/REC-xml-20060816/.

[3] 石玉晶,牛存良,馬新娜.使用XML進行異構數據庫間數據傳送[J].現代計算機,2003,19(11):79-80.

[4] 呂品,夏紅霞,李明.異構數據庫互操作平臺的開發研究[J].武漢理工大學學報,2003,25(1):35-37.

[5] 李應偉,姚素霞,景麗.ASP.NET數據庫高級教程(C#篇)[M].北京:清華大學出版社,2004:44-58,116-140.

[6] 郭廣軍,劉鳳龍,胡玉平..NET中基于XML的非連接數據訪問與同步技術研究[J].現代計算機,2005,(4):4-9.

主站蜘蛛池模板: 1024你懂的国产精品| 色亚洲激情综合精品无码视频| 国产成人综合网| 91国内在线观看| 欧美国产菊爆免费观看| 香蕉国产精品视频| 欧美日韩va| 免费毛片在线| 日本免费福利视频| 色噜噜中文网| 国产男人的天堂| 国产美女无遮挡免费视频| 国产AV无码专区亚洲精品网站| 国产办公室秘书无码精品| 亚洲视频免| 99久久精品国产精品亚洲| 国产大全韩国亚洲一区二区三区| 欧美日韩中文字幕在线| 中文字幕首页系列人妻| 无码国内精品人妻少妇蜜桃视频| 国产真实乱子伦精品视手机观看 | 韩日午夜在线资源一区二区| 国产人人乐人人爱| 黄网站欧美内射| 思思热在线视频精品| 日韩视频福利| 成人永久免费A∨一级在线播放| 国产免费久久精品44| 好紧太爽了视频免费无码| 久久香蕉国产线看观| 女人18毛片一级毛片在线| 久久国产V一级毛多内射| 青青草原国产免费av观看| 91小视频在线观看免费版高清| 久久精品娱乐亚洲领先| 国产丝袜一区二区三区视频免下载| 国产幂在线无码精品| 高潮毛片免费观看| 欧美激情二区三区| 日本精品一在线观看视频| 欧美成人午夜视频| 四虎永久免费地址在线网站| 女高中生自慰污污网站| 波多野结衣无码中文字幕在线观看一区二区| 亚洲AV成人一区国产精品| 欧美专区日韩专区| 精品视频在线观看你懂的一区| 久久永久视频| 亚洲精品在线影院| 国产91麻豆视频| 亚洲成a∧人片在线观看无码| 国产成人免费观看在线视频| 黄片在线永久| a在线亚洲男人的天堂试看| 国产成人亚洲综合a∨婷婷| 日本精品中文字幕在线不卡| 在线毛片免费| 久久6免费视频| 中文字幕在线免费看| 综合色区亚洲熟妇在线| 欧美人人干| 99青青青精品视频在线| 玖玖免费视频在线观看| 永久免费AⅤ无码网站在线观看| 免费看一级毛片波多结衣| 国产区免费| 亚洲欧美自拍中文| 第一页亚洲| 永久免费AⅤ无码网站在线观看| 无码福利日韩神码福利片| 久久国产精品电影| 欧美精品色视频| a在线观看免费| 成人国产小视频| 国产一区二区三区视频| 国产精品美女网站| 嫩草影院在线观看精品视频| 夜夜爽免费视频| 美女国内精品自产拍在线播放| 久久动漫精品| 国产午夜看片| 欧美日韩精品一区二区在线线 |