`

H2数据库用户自定义函数方法及范例

阅读更多

H2 数据库,是Java实现的内存数据库。可使用它作为嵌入式内存数据库,但就其特性还用更多值得应用在实际项目中的意义。之前的一篇Blog中已经描述过其使用方法及丰富的连接数据库方式。

 

官方主页:http://www.h2database.com/

 

此段文字只说明用户如何自定义数据库函数,以及在数据库中注册函数。如对你有帮助可继续阅读

 

     首先来说明用户自定义函数的场景,现在假设我们需要在H2数据库中实现Oracle的“TO_DATE”函数,那么需要的过程是这样的:(1) 使用Java实现自定义函数的方法。(2) 将Java的自定义函数注册到H2数据库中。

 

(1) 首先我们来实现这个函数:

 

TO_DATE函数的Code:

/**
 * 
 */
package com.seraph.bi.suite.support.h2;

import java.text.SimpleDateFormat;
import org.h2.tools.SimpleResultSet; 
... ...

/**
 * Description: Function for H2 database<br>
 * Origin Time: 2009-7-11 上午07:57:46<br>
 * 
 * @author Seraph<br>
 * @email:seraph115@gmail.com<br>
 */
public class Function {

	/**
	 * Method: TO_DATE function like Oracle's<br>
	 * Origin Time: 2009-7-11 上午08:14:11<br>
	 * 
	 * @author: Seraph<br>
	 * @param source
	 * @param format
	 * @return
	 * @throws ParseException 
	 */
	public static java.sql.Date to_date(String source, String format) throws ParseException {
		// TODO: 'YYYY-MM-DD' ? Oracle format?
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		java.util.Date date = sdf.parse(source);
		return new java.sql.Date(date.getTime());
	}
	... ...
}

 

 以上代码段是TO_DATE的实现,但用户自定义的函数需注意的是:类和方法必须是公共(Public)的,且方法需为静态(static)的,如方法中使用了Connection对象需将其关闭。

 

(2) 将其注册到数据库中,须执行语句

 

 

CREATE ALIAS

CREATE ALIAS [IF NOT EXISTS] newFunctionAliasName


 [DETERMINISTIC]
FOR classAndMethodName



 

 

本例须执行的语句为: CREATE ALIAS TO_DATE FOR "com.seraph.bi.suite.support.h2.Function.to_date";

 

这样再执行类似语句,如:SELECT to_date('2009-1-21','YYYY-MM-DD') from Your_Table  函数TO_DATE即可被解析了。

 

 

完成以上的步骤你就可以使用自己定义的数据库函数了。这样将更方便于数据库之间的切换,使用内存数据库应用程序启动轻快,体积小,适合于程序开发时的单元测试及集成测试,同时更适合于去客户方演示。

 

备注:

 

1.如使用的是编译类,需添加至jdbc驱动jar包中。

2.如使用的是源码,可直接使用sql语句添加至库中。例:

 

CREATE ALIAS IP_ADDRESS AS $$
import java.net.*;
@CODE
String ipAddress(String host) throws Exception {
    return InetAddress.getByName(host).getHostAddress();
}
$$;
 

 

官方说明文档:

 

User-Defined Functions and Stored Procedures

In addition to the built-in functions, this database supports user-defined Java functions. In this database, Java functions can be used as stored procedures as well. A function must be declared (registered) before it can be used. A function can be defined using source code, or as a reference to a compiled class that is available in the classpath. By default, the function aliases are stored in the current schema.

 

http://www.h2database.com/html/features.html#user_defined_functions

 

分享到:
评论
1 楼 zj1211 2010-06-04  
有没有办法给H2的内建函数创建一个别名, 比如 ifnull ,在sql server 里叫 isnull ,   再比如 current_date 在sql server里叫 getdate , 如果能给这些函数创建别名,那么可以提高兼容性。

    我现在是直接改他的源代码,增加这些函数,但是这不是一个好办法, H2一升级,我又得再整一遍,所以最好的办法是能给这些内建函数创建别名。

相关推荐

    H2Database.rar_H2Database聚合函数_H2数据库函数||_h2数据库修改

    本文档将深入探讨H2Database的聚合函数以及如何进行数据库的修改。 一、H2Database聚合函数 聚合函数在SQL中用于对一组值进行计算,返回单个结果。在H2Database中,常用的聚合函数有以下几种: 1. COUNT():计算...

    h2数据库 jar包 下载 资料

    3. **多种模式**: H2支持多种数据库模式,包括单用户模式、多用户模式(TCP服务器)、内存模式(所有数据都存储在内存中)以及混合模式,这使得它能够适应不同的应用场景。 4. **兼容性**: H2数据库设计时充分考虑...

    H2数据库客户端

    通过执行这个exe文件,用户可以在Windows操作系统上安装H2数据库客户端和服务器,从而方便地管理和操作H2数据库。 安装完成后,用户通常会得到一个命令行界面工具(h2-console)和可能的图形界面工具,用于连接和...

    h2数据库批量导出

    《H2数据库批量导出详解》 H2数据库是一款开源、高性能、轻量级的Java关系型数据库,广泛应用于测试、开发以及嵌入式环境。它支持多种数据库模式,包括MySQL、Oracle等,并且提供了丰富的命令行工具和API,使得...

    H2数据库驱动包

    H2数据库驱动包是专为H2数据库设计的连接组件,它使得开发者能够轻松地在应用程序中集成H2数据库,以便进行数据存储、查询和管理。H2数据库是一款开源、轻量级、高性能的关系型数据库,广泛应用于开发测试和小型项目...

    springboot整合h2数据库实战

    Spring Boot 整合 H2数据库实战 Spring Boot 是一个基于 Java 的开源框架,旨在简化 Java 企业级应用程序的开发过程。H2 是一个开源的关系型数据库,采用 Java 语言编写,不受平台的限制。Spring Boot 整合 H2 ...

    H2 Database(H2内存数据库)

    6、H2Database聚合函数.doc 7、H2Database连接配置.doc 8、H2Database数据类型.doc 9、H2Database中文教程.doc 10、H2内存数据库h2部署操作手册.docx 11、H2内存数据库安装与维护.doc 12、H2数据库基础知识.docx 13...

    启动H2数据库并导入数据库脚本

    1. **H2数据库**: H2是一个完全用Java编写的、支持多种模式(包括单用户模式、服务器模式和嵌入式模式)的关系型数据库。它的特点是速度快、小巧、易于使用,可以在Java应用程序中直接嵌入,也可以作为独立的服务器...

    H2数据库最新稳定版本,平台无关包

    描述中提到的"windows的安装版"指的是针对Windows操作系统的特定打包形式,通常包含一个图形用户界面(GUI)和一些额外的工具,使得在Windows环境下安装和管理H2数据库更为简便。这通常包括一个内置服务器,方便用户...

    h2 数据库 客户端

    **H2数据库客户端详解** H2数据库是一款开源、高性能、轻量级的Java关系型数据库管理系统,它在嵌入式和服务器模式下均表现出色。H2数据库以其易用性、快速性能和全面的SQL支持而受到开发者的青睐,尤其在进行测试...

    H2 Database 教程

    同时也会说明如何通过用户自定义变量、日期和时间处理来优化数据库的使用。另外,H2数据库还支持与多种第三方产品的集成,如Web应用服务器、编程语言、开发工具等。 7. H2数据库工具 H2提供了多种工具辅助数据库...

    h2数据导入mysql数据库(看评论酌情下载)

    h2 数据库导入 MySQL 数据库 h2 数据库导入 MySQL 数据库是指将 h2 数据库中的数据导入到 MySQL 数据库中,以便更好地存储和管理数据。下面将详细介绍 h2 数据库导入 MySQL 数据库的步骤。 首先,需要创建一个 ...

    H2数据库官方文档(English)

    - **用户定义变量**(User-Defined Variables):解释了如何在H2数据库中使用用户定义的变量。 - **日期和时间**(Date and Time):说明了如何在数据库中处理日期和时间数据。 - **集成Spring框架**(Using ...

    H2Database聚合函数.pdf

    H2数据库支持标准的SQL标准,意味着用户可以使用熟悉的SQL语法进行数据库操作。此外,H2数据库还支持集群模式,允许多个节点协同工作,提高数据处理的可靠性和性能。 在H2数据库中,聚合函数(Aggregate Functions...

    h2数据库及h2数据库驱动

    H2数据库是一个轻量级、高性能的开源关系型数据库,完全用Java编写,这使得它具有高度的可移植性,可以在任何支持Java的环境中运行。H2提供了多种运行模式,包括内嵌模式(Embedded Mode)、服务器模式(Server Mode...

    H2数据库demo展示

    9. **丰富的函数和特性**:H2提供了大量的内置函数和存储过程,如全文搜索、空间数据支持、自定义函数等。 在DEMO中,我们可以看到如何简单地使用H2数据库。通常,引入H2数据库的JAR包后,可以通过Java代码创建...

    H2数据库中文资料

    它支持多种数据库模式,包括单用户模式、嵌入式模式、服务器模式等,使得在不同的场景下都能灵活运用。H2数据库以其简单易用、快速启动和强大的功能而受到开发者的青睐。 **1. 数据类型** 在`H2Database数据类型....

    h2数据库安装文件-2021610.zip

    通常,这个压缩包会包含H2数据库的安装程序或者运行所需的JAR文件,以便用户在本地计算机上运行或集成到Java项目中。 解压后的“h2数据库安装文件-2021610.exe”是H2数据库的可执行文件,适用于Windows操作系统。...

    h2 数据库驱动包

    h2 数据库驱动包, 为drools-server 提供数据库支持,放在tomcat lib目录下执行

Global site tag (gtag.js) - Google Analytics