当前位置: 首页 > 办公软件 > office软件 > 正文

InfoPath开发实战(3):获取SQL Server中的数据

时间:2010-01-24 博客园 笑煞天

本节的内容:

如何在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')