OLEDB连接对象介绍(一)

在WPS Office中,可以通过OLEDB接口实现与外部数据源的交互,该功能在工作簿上通过OLEDBConnection对象实现,而在工作表中可以使用QueryTable对象。该对象主要用于建立与数据服务器的连接,需要指定目标服务器地址以及待访问的数据对象名称。此外,OLEDBConnection 对象还支持可选配置项,包括:

  • 身份验证凭据信息(如用户名/密码等认证参数)
  • 可执行命令(例如针对SQL Server数据库的SELECT查询语句等需要服务器处理的指令)
  • 其他参数(如:是否禁用多活动结果集等等)

一、OLEDB连接字符串

let connstr = `OLEDB;Provider=MSOLEDBSQL.1;Password=123456789;
Persist Security Info=True;User ID=sa;Initial Catalog=test;
Data Source=127.0.0.1;Use Procedure for Prepare=1;
Auto Translate=True;Packet Size=4096;Workstation ID=DESKTOP-******;
Use Encryption for Data=False;Tag with column collation when possible=False;
MARS Connection=False;DataTypeCompatibility=0;Trust Server Certificate=False;
Application Intent=READWRITE;MultiSubnetFailover=False;
Use FMTONLY=False;TransparentNetworkIPResolution=True;
Connect Retry Count=1;Connect Retry Interval=10`;

1.1、连接字符串参数介绍

参数说明
OLEDB连接方式
Provider=MSOLEDBSQL.1;OLE DB 驱动提供程序版本
Password=************;数据库密码
User ID=**;数据库用户名
Initial Catalog=test;连接默认数据库
Data Source=***.***.**.*;数据库服务器地址(IP或主机名)
Persist Security Info=True;连接成功后保留密码信息
Use Encryption for Data=False;不加密数据传输
Trust Server Certificate=False;不信任服务器证书(需要有效证书)
Packet Size=4096;网络包大小(字节)
Connect Retry Count=1;连接重试次数
Connect Retry Interval=10;重试间隔(秒)
TransparentNetworkIPResolution=True;启用透明网络IP解析
Use Procedure for Prepare=1;使用存储过程准备语句
Auto Translate=True;自动转换字符集
Workstation ID=DESKTOP-*******;客户端计算机名称
MARS Connection=False;禁用多活动结果集
DataTypeCompatibility=0;数据类型兼容模式(0=最新)
Application Intent=READWRITE;应用程序意图(读写模式)
MultiSubnetFailover=False;禁用多子网故障转移
Use FMTONLY=False;不使用FMTONLY元数据查询
Tag with column collation when possible=False;列排序规则标记

在 WPS Office​ 中,可以通过 OLEDB 接口​ 实现与外部数据源的交互,该功能由 OLEDBConnection 对象​ 管理。该对象的核心作用是建立与数据服务器的连接,主要涉及以下三类参数:

核心参数(红色标注)
  • 服务器地址(需连接的目标数据库服务器名称)
  • 数据对象名称(要在该服务器上访问的具体对象,如表、视图等)
安全相关参数(绿色标注)
  • 身份验证凭据(如用户名/密码等认证信息)
  • 推荐安全方案:若环境允许,建议启用 Windows 身份验证(集成安全认证),避免明文存储密码,提升安全性。
其他参数(黑色标注)
  • 可执行命令(如针对 SQL Server​ 的 SELECT 查询语句,或其他需服务器处理的指令)

通过合理配置这些参数,用户既能建立基础数据连接,也能根据安全需求选择更可靠的认证方式。如 Windows 身份验证:

let secureConnStr = `OLEDB;Provider=MSOLEDBSQL.1;
Integrated Security=SSPI;  // 使用 Windows 身份验证
Initial Catalog=test;
Data Source=127.0.0.1;
Encrypt=Yes;               // 启用加密
Trust Server Certificate=Yes;
Connection Timeout=30;`;

1.2、连接字符串的获取

在 WPS Office​ 中,用户可通过软件提供的 可视化数据库连接界面​ 手动获取连接字符串,具体操作步骤如下图所示:

第一步:点击菜单栏中的数据

第二步:点击获取数据,选择导入数据,打开选择数据源对话框

第三步:选择其他高级,打开连接属性

我们看到,有支持连接Oracle数据库的、连接Sql Server数据库;还有结合ODBC驱动连接任意数据库的方式等等,这里以Sql Server为例。

第四步:点击 Microsoft OLE DB Provider for Sql Server

  1. 基础参数设置

    • 输入目标数据库的 服务器IP地址

    • 根据认证方式选择填写:

      ▶ 若使用 标准身份验证,需补充输入 用户名​ 和 密码

      ▶ 若使用 Windows 验证(或 Windows NT 集成安全设置),无需填写用户名/密码(系统自动调用当前登录Windows账户的权限)

  2. 目标数据库选择

    从下拉列表或输入框中指定需要连接的 具体数据库名称

  3. 连接测试

    点击 [测试连接]​ 按钮,若弹窗提示 “连接成功”​ 字样,则表明当前配置的参数有效,与目标数据库的连接没有出错

  4. 点击确定使得测试链接窗口关闭,再点击数据连接属性窗口的确定

第五步:复制连接字符串,粘贴到JS宏代码中

完成上述配置并成功建立数据库连接后,系统将自动生成对应的 连接字符串(通常可在【选择数据源】界面的「手工输入连接语句」面板中直接查看/复制)。您可直接将该字符串应用于 WPS JavaScript 宏代码​ 中,用于后续的数据库交互操作(如数据查询、写入等)。

二、OLEDB连接字符串的基本使用

2.1、工作簿上的连接

function contest() {
	let connstr = "你复制过来的连接字符串";
	let connectionName = "myDatabase80"; // 连接名称
	let description = "实例数据库"; // 对连接的简要描述
	console.clear();
	let query = "select distinct sj 市级 from uf_scrl where tbsj='2025-11-01'";
	let q = "create view vw_city as select distinct sj 市级 from uf_scrl where tbsj='2025-11-01'";
	let conection = ThisWorkbook.Connections.Add2(connectionName, description, connstr, query, xlCmdSql);
	let conn = conection.OLEDBConnection; 
	conn.SaveAsODC("E:\\vscode\\wpsjs\\jsa_database\\myConnection.odc",);
	conn.Refresh(true);
	// 捕获数据库异常
	let errors = Application.OLEDBErrors;
	console.log("异常数:" + errors.Count);
	for (let i = 1; i <= errors.Count; i++) {
        console.log(`The following error occurred:${errors.Item(i).ErrorString} : ${errors.Item(i).SqlState}`);
    }
    console.log(conn.OLAP);
    console.log(conn.CommandText);
	console.log(conn.Connection);
	conn.MaintainConnection = false; //关闭连接
    conn.Delete(); // 删除连接
}

2.2、工作表上的连接

// 工作表上的连接
function conntest_sht() {
	let connstr = "你复制的连接字符串";
	let qyTb = Worksheets.Item(1).QueryTables.Add(connstr, Range("A1"), undefined);
	qyTb.Name = "sheet_database_con";
	qyTb.CommandType = xlCmdSql;
	qyTb.CommandText =  "select distinct sj 市级 from uf_scrl where tbsj='2025-11-01';";
	qyTb.Refresh(true); // 将查询结果返回到工作表中,如果是Create等语句不用写这一行
	// 捕获数据库异常
	let errors = Application.OLEDBErrors;
	console.log("异常数:" + errors.Count);
	for (let i = 1; i <= errors.Count; i++) {
        console.log(`The following error occurred:${errors.Item(i).ErrorString} : ${errors.Item(i).SqlState}`);
    }
    qyTb.Delete(); // 删除连接
}

执行效果图如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jackispy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值