SQL Server 的用于 Java 的 Microsoft 扩展性 SDK
适用于: SQL Server 2019 (15.x) 及更高版本
了解如何才能使用用于 Java 的 Microsoft 扩展性 SDK 为 SQL Server 实现 Java 程序。 SDK 是用于与 SQL Server 交换数据并从 SQL Server 执行 Java 代码的 Java 语言扩展的接口。
SDK 作为 SQL Server 2019 (15.x) 及更高版本的一部分安装,适用于 Windows 和 Linux:
- Windows 上的默认安装路径:
<instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
- Linux 上的默认安装路径:
/opt/mssql/lib/mssql-java-lang-extension.jar
该代码是开放源代码,可在 SQL Server 语言扩展 GitHub 存储库中找到。
实现要求
SDK 接口定义了一组要求,SQL Server 需要满足这些要求才能与 Java 运行时通信。 若要使用 SDK,需要在主类中遵循一些实现规则。 SQL Server 随后可以执行 Java 类中的特定方法,并使用 Java 语言扩展交换数据。
有关如何使用 SDK 的示例,请参阅教程:在 Java 中使用正则表达式 (regex) 搜索字符串。
SDK 类
SDK 由三个类组成。
定义 Java 扩展用于与 SQL Server 交换数据的接口的两个抽象类:
AbstractSqlServerExtensionExecutor
AbstractSqlServerExtensionDataset
第三个类是帮助程序类,包含数据集对象的实现。 这是可以使用的可选类,这样可以更轻松地入门。 还可以改为使用你自己对这样一个类的实现。
PrimitiveDataset
在下节中,将会看到 SDK 中每个类的说明。 SDK 类的源代码在 SQL Server 语言扩展 GitHub 存储库中提供。
类:AbstractSqlServerExtensionExecutor
抽象类 AbstractSqlServerExtensionExecutor
包含由 SQL Server 的 Java 语言扩展用于执行 Java 代码的接口。
主 Java 类需要从此类继承。 从此类继承表示类中有一些需要在自己的类中实现的特定方法。
若要从此抽象类继承,请在类声明中使用抽象类名进行扩展:
public class <MyClass> extends AbstractSqlServerExtensionExecutor {}
主类至少需要实现 execute(...) 方法。
execute 方法
execute 方法是通过 Java 语言扩展从 SQL Server 进行调用,以便从 SQL Server 调用 Java 代码的方法。 这是一个关键方法,其中包含希望从 SQL Server 执行的主要操作。
若要从 SQL Server 向 Java 传递方法参数,请在 sp_execute_external_script
中使用 @param
参数。 execute
方法通过此方式获取其参数。
public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params) {}
init 方法
init 方法在构造函数之后,execute 方法之前执行。 需要在 execute(...)
之前执行的任何操作都可以在此方法中进行。
public void init(String sessionId, int taskId, int numtask) {}
类:AbstractSqlServerExtensionDataset
抽象类 AbstractSqlServerExtensionDataset
包含用于处理 Java 扩展所使用的输入和输出数据的接口。
类:PrimitiveDataset
类 PrimitiveDataset
是将简单类型存储为基元数组的 AbstractSqlServerExtensionDataset
的实现。
PrimitiveDataset
在 SDK 中仅作为可选的帮助程序类提供。 如果不使用此类,则需要实现从 AbstractSqlServerExtensionDataset
继承的自己的类。