亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

從.NET應用程序訪問MicrosoftOffice數據

2019-11-18 15:17:23
字體:
來源:轉載
供稿:網友

  引言
  在 Microsoft .NET 應用程序中使用 Microsoft Office 數據時所需的大多數任務與使用任何其他數據時的任務相同 - 創建連接、根據使用數據時的需要創建 DataReader 或 DataAdapter、創建一個或多個 DataSet 來封裝相關數據的 DataTable,等等。因此,我不打算在此重新編寫 ADO.NET 文檔。本文的目的在于,提供按 Office 數據源編寫基礎數據檢索代碼時所需的缺失或廣為分布的信息段。似乎那些知道 Jet 的奇異之處的人士卻不是很熟悉 ADO.NET,而大部分的 ADO.NET 專業人士不是很了解支持 Office 可編程序性的技術。因此提供一個快速的概述,希望可以解答我所見到的這兩方的常見問題。
  
  首先讓我們討論一下連接到 Microsoft Excel 和 Microsoft access 的數據并從中檢索數據的基礎。我認為此領域中存在最大的問題 - 通常一旦人們能夠解決該問題,Office 特定問題將會得到解決,而且其余問題主要集中于如何使用 ADO.NET。下面我將討論如何使用 OleDbConnection 對象的 GetOleDbSchemaTable 方法來檢索關于運行時 Access 或 Excel 數據的架構信息。這樣,您可以避開關于數據源的硬編碼信息;數據源非常有用,從中可以獲取數據。
  
  建立連接
  假如要連接到 Excel 電子表格或 Access 數據庫,則需要創建一個 OleDbConnection 對象,并向其傳遞一個帶有目標數據源具體信息的連接字符串。您需要為 PRovider 屬性指定 Jet 4.0 OLE DB 提供程序。
  
  連接到 Access
  讓我們看一看用于 Access 數據庫的典型連接字符串:
  
  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= C:/Databases/mymusic.mdb"
  
  這非常簡單 - 它僅指定 Provider 和 Data Source 屬性。如上所述,Provider 是 Jet 4.0 提供程序,而 Data Source 屬性包含數據庫的完全限定路徑。
  
  當然,您甚至還需要確保 Access 數據庫的安全,對不對?這樣,您還需要指定工作組信息文件(默認情況下為 system.mdw)的路徑,并提供用戶 ID 和密碼:
  
  "Provider=Microsoft.Jet.OLEDB.4.0;Data " & _
  "Source=C:/Databases/mymusic.mdb; " & _
  "Jet OLEDB:System database=" & _
  "C:/Databases/system.mdw; " & _
  "User ID=UserX;PassWord=UserXPassword"
  
  請注重,指定控制 Access 數據庫安全性的 .mdw 文件時需要使用 Jet OLE DB 特定的屬性。假如希望更好地控制數據庫的行為,則可以瀏覽 Jet OLE DB 提供程序(該提供程序位于 Appendix B:Microsoft Jet 4.0 OLE DB Properties Reference)所提供的其他屬性,來控制鎖定行為和如何處理特定類型的失敗,等等。請注重,只有那些可以在連接字符串中設置的屬性才可以訪問;指定提供程序的屬性之前需要連接處于打開狀態,否則將無法設置這些屬性。
  
  可以使用 Microsoft® Visual Studio® .NET,來獲取包括所有的 Jet OLE DB 提供程序設置、完整的 Access 連接字符串的模板。在服務器資源治理器中創建一個與 Access 數據庫的數據連接,然后使用工具箱的數據部分創建一個 OleDbConnection 對象。得到的對象的 ConnectionString 屬性會包含默認的所有 Jet OLE DB 提供程序屬性。
  
  連接到 Excel
  現在,讓我們看看 Excel 電子表格的典型連接字符串的外觀:
  
  "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "Data Source=C:/Spreadsheets/calculations.xls;" & _
  "Extended Properties=Excel 8.0"
  
  在連接到 Excel 文件的情況下,可以看到我們必須在連接字符串中使用 Extended Properties 屬性以及 Provider 和 Data Source。假如是 Excel 8.0 和更高版本,則使用“Excel 8.0”設置。假如希望獲取此屬性的其他可接受值的更多信息,請參閱 ADO Provider Properties and Settings 的“Extended Properties Property Settings”部分。
  
  您會說:“啊,但是 Excel 中的安全性怎么樣?”嗯,恐怕沒有激動人心的消息。您無法打開與受密碼保護的電子表格的連接,除非已手動地在 Excel 中打開此電子表格(有關具體信息,請參閱 XL2000:"Could Not Decrypt File" Error with Password Protected File)。描述的錯誤出現于 Excel ODBC 提供程序,但是在 Jet 4.0 OLE DB 提供程序中該行為相同。其他選項為,刪除電子表格的密碼并使用某些其他安全機制(例如,限制文件所在文件夾的權限)來控制訪問。
  
  不幸的是,您也無法使用 Visual Studio .NET 獲取 Excel 連接字符串的模板。進行一些小小的嘗試,即可創建 Excel 數據連接;但是您會發現其屬性不可編輯,而且 ConnectionString 屬性將保留空白 - 這是 IDE(集成的開發環境)中的奇異之處。有關具體信息,請參閱 PRB:Cannot Configure Data Connection to Excel Files in Visual Studio .NET。這樣,對于 Excel 連接,基本上都需要自己進行工作,但在這種情況下對連接進行編碼就像在用戶界面 (UI) 中創建連接一樣簡單。
  
  檢索數據
  現在已經明白了如何建立與 Office 數據源的連接,就讓我們看看它是怎樣檢索數據的。出于簡單性的考慮,我打算使用 OleDbConnection/OleDbCommand/OleDbDataReader 數據檢索方案。相同的方法在稍稍調整之后,可以用于構建 OleDbDataAdapter 并填充 DataSet。假如想要大體上了解一下 ADO.NET,請參閱《.NET Framework Developer's Guide》的 Accessing Data with ADO.NET 部分,它會為您帶來閱讀的樂趣。
  
  檢索 Access 數據
  編寫 Access 數據檢索代碼時請切記,指定 SQL 時必須遵循的語法具有某些特性。無法在圖形 UI 中創建 Access 查詢,無法訪問 SQL 視圖,無法復制得到的 SQL 語句并將其粘貼到代碼中。不,這本應非常簡單的。生成的 SQL 代碼通常具有一部分但不是全部的所需語法。必須在 Access 開發環境中編寫代碼的任何人都會知道這一點,但是對于一般的 .NET 客戶端應用程序開發人員而言,這算的上是新聞。最讓人煩心的是條件表達式,它需要以某種方式分隔 WHERE 字句中的特定類型的數據。日期和時間值必須使用數字記號 (#) 進行分隔。文本值必須使用單引號 (') 進行分隔。例如:
  
  SELECT City, Neighborhood, SalePrice, MonthsOnMarket
  FROM RealEstate
  WHERE ListingDate > #1/1/04#
  
  有關這些問題的具體信息,請參閱 Date and Time Criteria Expressions。
  
  需要記住的另一點看上去似乎顯而易見,但是卻使人們感到困惑,所以我將討論這一點:請確保 Access 表的列名稱不使用保留字??梢栽?SQL Reserved Words 處查詢保留字。假如使用任何保留字,我想說的是假如可能就重命名列。我知道假如您已使用數據庫,該操作則不太可能,所以必要時可以創建查詢并將其用作有問題列的表的替換查詢。僅使用 AS 重命名列,就如:
  
  SELECT Artists.ArtistName, Genres.Genre, Labels.Label,
  Tracks.Public AS Track, Releases.ReleaseName
  FROM (Labels INNER JOIN ((Artists...
  
  記住這些要點,讓我們來看一個示例:
  
  Imports System
  Imports System.Data
  Imports System.Data.OleDb
  ...
  Public Function GetAccessData(ByVal UID As String, _
  ByVal pwd As String, ByVal artist As String)
  
  Dim conn As New OleDbConnection
  Dim musicReader As OleDbDataReader
  Dim cmd As New OleDbCommand
  Dim connString As String
  Dim i As Integer
  
  Try
  ' 設置連接字符串。
  connString = "Jet OLEDB:System database=" & _
  "C:/Databases/system.mdw;" & _
  "Data Source=C:/Databases/mymusic.mdb;" & _
  "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  "User ID=" & UID & ";Password=" & pwd
  
  ' 打開連接。
  conn.ConnectionString = connString
  conn.Open()
  
  '設置命令屬性。
  cmd.Connection = conn
  cmd.CommandText = "SELECT * from music " & _
  "WHERE ArtistName = '" & artist & "'"
  
  ' 獲取 OleDbDataReader
  ' 并對其進行一些處理。
  musicReader = _
  cmd.ExecuteReader(CommandBehavior.CloseConnection)
  Try
  While (musicReader.Read)
  '處理數據。
  End While
  Finally
  musicReader.Close()
  End Try
  
  Catch ex As Exception
  '錯誤處理
  End Try
  
  End Function 'GetAccessData
  
  檢索 Excel 數據
  關于列名稱,Excel 和 Access 一樣具有相同的保留字限制。一般而言,假如記住 SQL 保留字,并在創建可能用作數據源的任何對象時避開保留字,則會更好。還有一點需要考慮。
  
  Excel 的語法同樣也有奇異之處。對代碼影響最大的項是用于引用要返回的數據集的語法。
  
  注重:對于最簡單的 Excel 數據檢索,請使用維護類似表格式的電子表格。
  
  第一個選項是指定工作表和該表中的單元格集(可選)。需要確保工作表名稱后跟美元符號和單元格集(可選)。通過使用冒號分隔集合中的起始單元格和終止單元格,來指定此單元格集。然后,使用括號將整個數據標識字符串括起。使用此類型語法的 SELECT 語句可能如下所示:
  
  SELECT SalesMonth, TotalSales, PercentageChange1Year
  FROM [Sheet1$A1:E24]
  
  另一個選項是在 Excel 中創

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩高清av在线| 国内精品久久久久久久| 国产91在线播放| 久久久久久中文| 欧美精品在线网站| 久久久久久久久久久亚洲| 亚洲精品资源在线| 成人a在线视频| 国产午夜精品久久久| 久久天天躁夜夜躁狠狠躁2022| 538国产精品视频一区二区| 中文字幕最新精品| 久久精品99久久久久久久久| 亚洲精品中文字幕有码专区| 黑人狂躁日本妞一区二区三区| 亚洲精品二三区| 色妞一区二区三区| 久久91精品国产91久久久| 国产精品igao视频| 欧洲中文字幕国产精品| 亚洲综合第一页| 亚洲free性xxxx护士白浆| 日韩欧美国产免费播放| 精品一区二区三区四区| 91精品国产91久久久久久不卡| 国产欧美精品一区二区三区介绍| 欧美一级片一区| 中国日韩欧美久久久久久久久| 日韩亚洲国产中文字幕| 日韩精品中文字幕在线播放| 日韩免费在线免费观看| 亚洲a在线播放| 色妞一区二区三区| 国产精品一区二区三区在线播放| 国产精品女主播| 欧美一区三区三区高中清蜜桃| 色狠狠av一区二区三区香蕉蜜桃| 国产美女精品视频免费观看| 欧美人与性动交a欧美精品| 国内精品伊人久久| 精品女同一区二区三区在线播放| 日韩视频在线免费观看| 奇米四色中文综合久久| 成人动漫网站在线观看| 欧美一乱一性一交一视频| 青草热久免费精品视频| 欧美午夜电影在线| 久久久久久av| 国内精品一区二区三区四区| 91av免费观看91av精品在线| 俺去了亚洲欧美日韩| 最近更新的2019中文字幕| 日韩小视频在线| 亚洲精品中文字| 国产精品热视频| 57pao国产成人免费| 欧美做受高潮电影o| 91久久久久久久一区二区| 欧美丝袜一区二区三区| 日韩av第一页| 国产精品视频网站| 97精品一区二区视频在线观看| 欧洲美女7788成人免费视频| 欧美国产日韩二区| 久久中文字幕在线| 亚洲国语精品自产拍在线观看| 国模叶桐国产精品一区| 最近2019中文字幕mv免费看| 久久久久久久久国产| 国产精品久久久91| 国产欧美精品va在线观看| 欧美成人激情图片网| 中文字幕亚洲自拍| 97国产精品视频| 精品人伦一区二区三区蜜桃免费| 激情懂色av一区av二区av| 欧美高清视频一区二区| 国产精品美女午夜av| 欧美在线视频在线播放完整版免费观看| 色与欲影视天天看综合网| 亚洲在线观看视频网站| 国产视频亚洲视频| 久久久精品美女| 亚洲天堂日韩电影| 欧美日韩国产成人在线观看| 亚洲品质视频自拍网| 日韩一区在线视频| 91最新在线免费观看| 亚洲美女视频网| 日韩**中文字幕毛片| 欧美黄色片在线观看| 久久成人精品视频| 亚洲最大福利视频| 国产一区二区日韩精品欧美精品| 57pao国产成人免费| 亚洲va欧美va国产综合剧情| 亚洲国产精品久久久| 国产精品久久97| 亚洲国产精品人人爽夜夜爽| 国产精品成av人在线视午夜片| 亚洲日韩第一页| 中文字幕亚洲图片| 国产精品海角社区在线观看| 不卡av电影在线观看| 欧美成人午夜剧场免费观看| 97在线视频免费| 国产精品久久电影观看| 日韩美女视频中文字幕| 国产欧美在线播放| 欧美日韩亚洲国产一区| 日韩欧美在线免费| 欧美性受xxx| 国产在线视频2019最新视频| 操91在线视频| 国产亚洲美女精品久久久| 国产一区二区三区精品久久久| 最近2019中文免费高清视频观看www99| 成人黄色av免费在线观看| 欧美一级视频免费在线观看| 欧美午夜精品伦理| 在线观看免费高清视频97| 国内精品一区二区三区四区| 亚洲欧美国产精品va在线观看| 欧美国产日韩一区二区在线观看| 日韩av最新在线观看| 国产午夜精品久久久| 欧美在线一区二区三区四| 国产精品av免费在线观看| 成人午夜激情免费视频| 日韩视频中文字幕| 欧美老女人在线视频| 91国产视频在线| 精品成人av一区| 亚洲一级黄色片| 亚洲第一区中文99精品| 欧美黄色三级网站| 亚洲嫩模很污视频| 欧美在线视频一二三| 成人激情黄色网| 孩xxxx性bbbb欧美| 欧美精品久久久久a| 欧美日韩亚洲视频一区| 九九精品在线视频| 国产成人精品久久二区二区| 国产精品久久久久久久久久久久| 国产国产精品人在线视| 7777免费精品视频| 色一情一乱一区二区| 国产成人福利视频| 欧美在线视频观看免费网站| 日韩av电影手机在线| 久久91精品国产91久久跳| 九色成人免费视频| 亚洲图片欧美午夜| 日韩精品在线电影| 欧美孕妇与黑人孕交| 精品国产一区二区三区在线观看| 日韩在线播放视频| 亚洲爱爱爱爱爱| 97视频在线观看网址| 欧美激情一区二区三区高清视频| 国产欧美 在线欧美| 欧美黑人视频一区| 欧美激情在线视频二区|