本節的內容:
如何在InfoPath中使用資料連線來從SQL Server資料庫中擷取資料
如何通過代碼來修改資料連線中的SQL查詢
在開始設計InfoPath表單之前,先準備一個資料庫,InfoPath支援兩種資料庫連接:
Microsoft Office Access資料庫(.mdb檔案或.accdb檔案)
Microsoft SQL Server資料庫
需要注意的是,InfoPath雖然支援SQL Server Express資料庫,但卻不支援以檔案的形式串連SQL Server Express(直接連接.mdf檔案),所以如果想使用SQL Server Express資料庫,請將資料庫檔案(.mdf檔案)附加到SQL Server Express中。這也就意味著,資料庫無法同InfoPath一起分發,使用了SQL Server資料連線的InfoPath如果想要正常地進行查詢,就必須保證用戶端能夠訪問SQL Server資料庫(無法離線查詢)。使用Access資料庫也需要確保用戶端可以訪問Access資料庫。如果該Access資料庫位於網路位置,則需要確保用戶端可以訪問該位置;如果Access資料庫位於本地,那麼分發InfoPath表單時就需要注意連同該資料庫一起分發(這種方式可以實現離線查詢)。
而查詢方式上,這兩種資料庫都統一使用了SQL文法。
因為沒有安裝Office Access,所以本樣本將使用SQL Server作為目標資料庫。首先在SQL Server中建立一個名為TestDB的資料庫,然後使用下面的指令碼來向其中添加blogs表以及其內容:
/****** 對象: Table [dbo].[blogs] 指令碼日期: 01/19/2009 13:45:22 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[blogs]') AND type in (N'U'))
DROP TABLE [dbo].[blogs]
GO
/****** 對象: Table [dbo].[blogs] 指令碼日期: 01/19/2009 13:45:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[blogs]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[blogs](
[name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[blog] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL
)
END
GO
INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Windie Chai', N'http://xiaoshatian.cnblogs.com')/
INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Terry Lee', N'http://terrylee.cnblogs.com')/
INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'AnyTao', N'http://anytao.cnblogs.com')/
INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Anders Liu', N'http://andersliu.cnblogs.com')/
INSERT [dbo].[blogs] ([name], [blog]) VALUES (N'Kaneboy', N'http://blog.joycode.com/kaneboy')